web-dev-qa-db-ja.com

write.table()出力で10進数の桁数を制御するにはどうすればよいですか?

データ(たとえば、data.frame内)を使用する場合、ユーザーは次を使用して数字の表示を制御できます。

_options(digits=3) 
_

このようにdata.frameをリストします。

_ttf.all
_

ユーザーがこのようにExcellにデータを貼り付ける必要がある場合

_write.table(ttf.all, 'clipboard', sep='\t',row.names=F)
_

Digitsパラメータは無視され、数値は丸められません。

素敵な出力を見る

_> ttf.all
  year V1.x.x V1.y.x ratio1 V1.x.y V1.y.y ratioR V1.x.x V1.y.x ratioAL V1.x.y V1.y.y ratioRL
1 2006    227    645   35.2     67    645   10.4    150    645    23.3     53    645    8.22
2 2007    639   1645   38.8    292   1645   17.8    384   1645    23.3    137   1645    8.33
3 2008   1531   3150   48.6    982   3150   31.2    755   3150    24.0    235   3150    7.46
4 2009   1625   3467   46.9   1026   3467   29.6    779   3467    22.5    222   3467    6.40
_

しかし、Excel(クリップボード)にあるものは丸められません。 write.table()で制御する方法は?

52
userJT

関数format()は次のように使用できます。

_write.table(format(ttf.all, digits=2), 'clipboard', sep='\t',row.names=F)
_

format()は、data.framesを含む多くのクラスのメソッドを持つ汎用関数です。 round()とは異なり、データフレームがすべて数値ではない場合、エラーはスローされません。書式設定オプションの詳細については、_?format_からヘルプファイルを参照してください

55
MattBagg

character列とnumeric列が混在するデータフレームのソリューションを追加します。最初に _mutate_if_ を使用してnumeric列を選択し、round()関数をそれらに適用します。

_# install.packages('dplyr', dependencies = TRUE)
library(dplyr)

df <- read.table(text = "id  year V1.x.x V1.y.x ratio1
a 2006    227.11111    645.11111   35.22222  
b 2007    639.11111   1645.11111   38.22222  
c 2008   1531.11111   3150.11111   48.22222  
d 2009   1625.11111   3467.11111   46.22222",
                 header = TRUE, stringsAsFactors = FALSE)
str(df)
#> 'data.frame':    4 obs. of  5 variables:
#>  $ id    : chr  "a" "b" "c" "d"
#>  $ year  : int  2006 2007 2008 2009
#>  $ V1.x.x: num  227 639 1531 1625
#>  $ V1.y.x: num  645 1645 3150 3467
#>  $ ratio1: num  35.2 38.2 48.2 46.2


df <- df %>% 
  mutate_if(is.numeric, round, digits = 2)
df
#>   id year  V1.x.x  V1.y.x ratio1
#> 1  a 2006  227.11  645.11  35.22
#> 2  b 2007  639.11 1645.11  38.22
#> 3  c 2008 1531.11 3150.11  48.22
#> 4  d 2009 1625.11 3467.11  46.22
_

reprexパッケージ (v0.2.1.9000)によって2019-03-17に作成

2
Tung