在 R 中将 NA 转换为 0,将非 NA 转换为 1

tmm*_*mmi 4 r dataframe na

我在将 NA 和不同值的表转换为 NA 为 0 以及所有值为 1 时遇到问题。

表格看起来像这样:

x    y    z
NA   8    NA
2    NA   NA
9    9    8
...
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法将 NA 转换为 0:

data[is.na(data)] <- 0
Run Code Online (Sandbox Code Playgroud)

但我无法立即转换所有列的其他值。

M--*_*M-- 5

你可以用一个简单的ifelse(一行)来做到这一点:

data <- data.frame(ifelse(is.na(data),0,1))
Run Code Online (Sandbox Code Playgroud)

或者更简单:

+!is.na(data)
Run Code Online (Sandbox Code Playgroud)

两者都会给你:

##   x y z
## 1 0 1 0
## 2 1 0 0
## 3 1 1 1
Run Code Online (Sandbox Code Playgroud)

数据:

data <- structure(list(x = c(NA, 2L, 9L), y = c(8L, NA, 9L), z = c(NA,               
     NA, 8L)), .Names = c("x", "y", "z"), row.names = c(NA, 3L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)