当我将因子转换为数字或整数时,我得到基础级别代码,而不是值作为数字.
f <- factor(sample(runif(5), 20, replace = TRUE))
## [1] 0.0248644019011408 0.0248644019011408 0.179684827337041
## [4] 0.0284090070053935 0.363644931698218 0.363644931698218
## [7] 0.179684827337041 0.249704354675487 0.249704354675487
## [10] 0.0248644019011408 0.249704354675487 0.0284090070053935
## [13] 0.179684827337041 0.0248644019011408 0.179684827337041
## [16] 0.363644931698218 0.249704354675487 0.363644931698218
## [19] 0.179684827337041 0.0284090070053935
## 5 Levels: 0.0248644019011408 0.0284090070053935 ... 0.363644931698218
as.numeric(f)
## [1] 1 1 3 2 5 5 3 4 4 1 4 2 3 1 3 5 4 5 3 2
as.integer(f)
## [1] 1 1 3 2 5 …Run Code Online (Sandbox Code Playgroud) 我有一个数字,例如1.128347132904321674821,我想在输出到屏幕(或写入文件)时只显示两位小数.怎么做到这一点?
x <- 1.128347132904321674821
Run Code Online (Sandbox Code Playgroud)
编辑:
指某东西的用途:
options(digits=2)
Run Code Online (Sandbox Code Playgroud)
已被建议作为可能的答案.有没有办法在脚本中指定一次性使用?当我将它添加到我的脚本时,它似乎没有做任何不同的事情,我对很多重新键入格式化每个数字感兴趣(我正在自动化一个非常大的报告).
-
答案:round(x,digits = 2)
下面是数据帧df1,我希望将因子格式的"V2"列转换为数字,而不更改当前值(0; 0; 8,5; 3).
DF1 =
V1 V2 V3 X2 X3
4470 2010-03-28 0 A 21.53675 0
4471 2010-03-29 0 A 19.21611 0
4472 2010-03-30 8,5 A 21.54541 0
4473 2010-03-31 3 A NA NA
Run Code Online (Sandbox Code Playgroud)
由于列"V2"是因子格式,我首先将其转换为字符格式:
df1[,2]=as.character(df1[,2])
然后我尝试将"V2"转换为数字格式:
df1[,2]=as.numeric(df1[,2])
导致此R消息:
Warning message: NAs introduced by coercion
下面的数据框df[3,2]已变为"NA"而不是"8,5".
V1 V2 V3 X2 X3
4470 2010-03-28 0 A 21.53675 0
4471 2010-03-29 0 A 19.21611 0
4472 2010-03-30 NA A 21.54541 0
4473 2010-03-31 3 A NA NA
Run Code Online (Sandbox Code Playgroud)
这可能与8,5不是整数的事实有关.我还是不知道如何解决这个问题.非常感谢帮助!