5

データ フレームに複数の整数列があり、すべて NA を 0 に再コード化する必要があります。

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 の最初の数列のみ)

ここに画像の説明を入力

各列のように手動で NA を 0 に再コーディングすることもできdf$col[is.na(df$col)] <- 0ますが、非常に多くの列があるため、すべてを入力するには時間がかかります。

これらすべての NA を 1 行または 3 行で 0 に再コーディングするにはどうすればよいですか?

(整数列を溶かしてから、溶かした1つの列を再コード化できることに気づきましたが、ベースRでこれを行いたいと思います)

4

2 に答える 2

11

あなたはとても親しかった:

df[is.na(df)] <- 0
于 2012-09-07T04:26:47.117 に答える
2

plyrcolwiseメタ関数を使用すると、これが簡単になります。

dfZ=colwise(function(x)ifelse(is.na(x),0,x))(df)
于 2012-09-07T04:59:41.147 に答える