1. ホーム
  2. r

[解決済み] 選択した列のテーブルのNA値を置換する方法

2023-02-28 09:49:43

質問

NA値の置き換えに関する投稿が多くあります。私は、次の表・枠のNAを次のように置き換えることができると認識しています。

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

しかし、特定のカラムだけに制限したい場合はどうすればいいのでしょうか?例を挙げてみよう。

まず、データセットを用意しましょう。

set.seed(1234)
x <- data.frame(a=sample(c(1,2,NA), 10, replace=T),
                b=sample(c(1,2,NA), 10, replace=T), 
                c=sample(c(1:5,NA), 10, replace=T))

どちらが与えるか。

    a  b  c
1   1 NA  2
2   2  2  2
3   2  1  1
4   2 NA  1
5  NA  1  2
6   2 NA  5
7   1  1  4
8   1  1 NA
9   2  1  5
10  2  1  1

OK、それで私はカラム 'a' と 'b' にのみ置換を制限したいのです。私の試みは

x[is.na(x), 1:2]<-0

とする。

x[is.na(x[1:2])]<-0

というのはうまくいきません。

私のdata.tableの試みは、ここで y<-data.table(x) は明らかにうまくいきませんでした。

y[is.na(y[,list(a,b)]), ]

is.naの引数の中にカラムを渡したいのですが、それは明らかにうまくいかないでしょう。

私はこれをdata.frameとdata.tableで行いたいと思います。私の最終目標は、論理変数ではないので、'c' をそのままにして、'a' と 'b' で 1:2 から 0:1 に再コード化することです。カラムがたくさんあるので、1つ1つやりたくありません。そして、私はこれを行う方法を知りたいだけです。

何かいい方法はないでしょうか?

どのように解決するのですか?

できます。

x[, 1:2][is.na(x[, 1:2])] <- 0

または、より良い(IMHO)、変数名を使用してください。

x[c("a", "b")][is.na(x[c("a", "b")])] <- 0

どちらの場合も 1:2 または c("a", "b") は、あらかじめ定義されたベクトルに置き換えることができます。