我在将 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)
但我无法立即转换所有列的其他值。
你可以用一个简单的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)