我在 R 中组合了几个大型数据集,其中缺失值用“。”表示。我想做批量查找和替换“。” 在整个数据集中使用“NA”(大约有 35 列,数十万行)。我已经在各个列中尝试了 ifelse 语句,但是在此过程中,列的类从因子变为字符。当我转换回因子时,值已经改变。
示例数据框:
SHARP_ID YEAR CAL_DATE JUL_DAY ST_TIME OBS_INIT NOISE
23971_p7 2012 28-Jul-12 210 837 RP_CAW 1
23971_p7 2012 2-Jun-12 154 735 RP_CAW 4
23971_p5 2012 28-Jul-12 210 855 RP_CAW 1
23971_p10 2012 28-Jun-12 180 1012 RP_CAW 3
23971_p10 2012 28-Jul-12 210 813 RP_CAW 1
23971_p2 2012 28-Jun-12 180 856 RP_CAW .
23971_p2 2012 28-Jun-12 180 856 RP_CAW 2
23971_p2 2012 28-Jul-12 210 921 RP_CAW 1
23971_p5 2012 2-Jun-12 154 753 RP_CAW .
23971_p5 2012 2-Jun-12 154 753 RP_CAW .
我尝试过使用 ifelse、lapply 和 gsub,但是在所有情况下,列的模式(在本例中为 NOISE)都会从因子变为字符。当我尝试将其切换回因子时,值是不同的。例如:
> levels(d$NOISE)
[1] "." "0" "1" "2" "3" "4"
> class(d$NOISE)
[1] "factor"
> d$NOISE=ifelse(d$NOISE==".",as.factor("NA"),as.factor(d$NOISE))
> class(d$NOISE)
[1] "integer"
> d=RP12[,1:24]
> levels(d$NOISE)
[1] "." "0" "1" "2" "3" "4"
> class(d$NOISE)
[1] "factor"
> d$NOISE=ifelse(d$NOISE==".",as.factor("NA"),as.factor(d$NOISE))
> class(d$NOISE)
[1] "integer"
> d$NOISE=as.factor(d$NOISE)
> class(d$NOISE)
[1] "factor"
> levels(d$NOISE)
[1] "1" "2" "3" "4" "5" "6"
我需要对此数据集中的许多值进行全面查找/替换,并且大多数情况下它们将等同于 Excel 中特定于单元格的查找和替换。这些数据库太大了,无法在 Excel 中处理,所以我在这里。我是 R 中数据管理的新手,所以请多多包涵,非常感谢。