使用数据时(例如,在data.frame中),用户可以使用
控制显示数字options(digits=3)
并列出这样的data.frame。
ttf.all
当用户需要像这样在Excell中粘贴数据时
write.table(ttf.all, 'clipboard', sep='\t',row.names=F)
数字参数被忽略,数字不会被舍入。
看到好的输出
> 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()
中控制?
答案 0 :(得分:55)
您可以使用format()
功能,如下所示:
write.table(format(ttf.all, digits=2), 'clipboard', sep='\t',row.names=F)
format()
是一个泛型函数,它包含许多类的方法,包括data.frames。与round()
不同,如果您的数据帧不是全数字,则不会抛出错误。有关格式化选项的更多详细信息,请参阅?format
答案 1 :(得分:1)
为包含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 package(v0.2.1.9000)于2019-03-17创建