我从CSV文件导入了一个奇数格式的数值数据。这里是我正在使用的数据帧的可重复的例子:重新格式化R中的杂乱数据帧列
df <- data.frame("r1" = c(1,2,3,4,5), "r2" = c(1,2.01,-3,"-","2,000"))
“R2”包含底片的迹象,例如值“ - ”,以零表示的值为零 - “ - ”。要运行在这个混乱的R2列中的某些数值分析,我将需要:
- 替换“ - ”用零“0”,同时避免消除在负值前面的 负号。
- 避免强制NIA等“2,000”等合法值。出于某种原因,当我运行命令时:
foo$row2<- as.numeric(sub("-",0,foo$row2))
R将用逗号格式化的值强制转发到NAs,从而破坏列中的数据。
下面是输出的一个例子运行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
正如你所看到的, “2000” 被裹挟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)
的命令。
它们看起来几乎等同于我。 –