我从 CSV 文件中导入了一个带有奇怪格式数字数据的大型数据框。这是我正在使用的数据框的可重现示例:
df <- data.frame("r1" = c(1,2,3,4,5), "r2" = c(1,2.01,-3,"-","2,000"))
'r2' 包含带负号的值,例如“-”,以及用破折号“-”表示的零值。要对这个凌乱的 r2 列进行一些数值分析,我需要:
- 将“-”替换为零“0”,同时避免删除负值前面的负号。
- 避免对 NA 强制使用“2,000”等合法值。出于某种原因,当我运行命令时:
foo$row2<- as.numeric(sub("-",0,foo$row2))
R 将用逗号格式化的值强制转换为 NA,从而损坏列中的数据。
这是运行后的输出示例foo$row2<- as.numeric(sub("-",0,foo$row2))
:
Warning message:
NAs introduced by coercion
r1 r2
1 1 1.00
2 2 2.01
3 3 3.00
4 4 0.00
5 5 NA
如您所见,“2,000”被强制转换为 NA。-3 被错误地转换为 3(删除了破折号)。但是,嘿,至少我们去掉了第 3 行中的“-”,对吧!!!
以下是我最终想要制作的内容:
r1 r2
1 1 1.00
2 2 2.01
3 3 -3.00
4 4 0.00
5 5 2000
请注意,第 5 行的逗号已删除。列 r2 应该被格式化,以便我可以sum(df$r2)
在上面运行类似的命令。