如何在 R 資料框列中將 NA 替換為 0,其他值替換為 1?


有時我們想使用 0 和 1 將 R 資料框的一列轉換為二進位制列,這尤其是在資料框列中有一些 NA 值,並且其他值由於某些特徵可以轉換為 1 的情況下進行。要將 NA 替換為 0,其他值替換為 1,我們可以使用 ifelse 函式。

示例 1

 線上演示

考慮以下資料框:

x1<−1:20
x2<−sample(c(NA,rnorm(5)),20,replace=TRUE)
df1<−data.frame(x1,x2)
df1

輸出

x1 x2
1 1 1.6562106
2 2 NA
3 3 2.2323438
4 4 2.2323438
5 5 1.2038679
6 6 2.2323438
7 7 NA
8 8 1.6562106
9 9 NA
10 10 1.2038679
11 11 −0.6898052
12 12 2.2323438
13 13 2.2323438
14 14 1.6562106
15 15 NA
16 16 1.2038679
17 17 NA
18 18 −0.6898052
19 19 2.2323438
20 20 2.2323438

將 x2 列中的 NA 替換為 0,其他值替換為 1:

示例

df1$x2<−ifelse(is.na(df1$x2),0,1)
df1

輸出

x1 x2
1 1 1
2 2 0
3 3 1
4 4 1
5 5 1
6 6 1
7 7 0
8 8 1
9 9 0
10 10 1
11 11 1
12 12 1
13 13 1
14 14 1
15 15 0
16 16 1
17 17 0
18 18 1
19 19 1
20 20 1

示例 2

 線上演示

y1<−LETTERS[1:20]
y2<−sample(c(NA,rpois(5,2)),20,replace=TRUE)
df2<−data.frame(y1,y2)
df2

輸出

y1 y2
1 A 2
2 B 5
3 C NA
4 D 3
5 E 1
6 F NA
7 G 1
8 H 3
9 I 5
10 J 5
11 K NA
12 L NA
13 M 2
14 N 5
15 O 3
16 P 2
17 Q 2
18 R 1
19 S 2
20 T NA

將 y2 列中的 NA 替換為 0,其他值替換為 1:

示例

df2$y2<−ifelse(is.na(df2$y2),0,1)
df2

輸出

y1 y2
1 A 1
2 B 1
3 C 0
4 D 1
5 E 1
6 F 0
7 G 1
8 H 1
9 I 1
10 J 1
11 K 0
12 L 0
13 M 1
14 N 1
15 O 1
16 P 1
17 Q 1
18 R 1
19 S 1
20 T 0

更新於:2021 年 2 月 8 日

668 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告