在多个数据帧列中重新编码NA

时间:2012-09-07 04:24:54

标签: r

我在数据框中有多个整数列,都有我需要重新编码为0的NA。

df1 <- as.data.frame(sapply(paste(sample(letters,50,T),sample(letters,10), sep=""), function(x) {sample(c(NA,0:5),10,T)} ))
df2 <- as.data.frame(sapply(paste(sample(letters,5,T),sample(letters,10,T), sep=""), function(x) {sample(letters[1:5],10,T)} ))
df <- cbind(df2,df1)

生成这样的输出......(仅显示55的前几列)

enter image description here

对于每列,我可以手动将NAs重新编码为0,例如df$col[is.na(df$col)] <- 0,但鉴于列数太多,需要一段时间才能输出全部。

如何在一行或三行中将所有这些NN重新编码为0?

(我意识到我可以融化整数列然后重新编码一个熔化的列,但我宁愿在基础R中这样做)

2 个答案:

答案 0 :(得分:11)

你非常接近:

df[is.na(df)] <- 0

答案 1 :(得分:2)

使用plyr的{​​{1}}元函数可以轻松实现:

colwise