首先,如何将NA更改为任何内容?
x[x==NA] <- "anything"
这不起作用。
另外,如何删除NA上有条件的数据帧中的行?例如:
[,1][,2][,3]
[1,] NA NA 284
[2,] 233 182 249
[3,] 177 201 NA
我想删除该特定行中包含2个或更多NA的行,因此会导致:
[,1][,2][,3]
[2,] 233 182 249
[3,] 177 201 NA
有人标记我的问题重复,但实际上我想控制NA的数量以删除行,complete.cases(x)
无法对其进行任何控制。
答案 0 :(得分:2)
您还可以使用complete.cases()
:
x <- x[complete.cases(x),]
答案 1 :(得分:1)
这是另一种可能性:
x[!is.na(rowSums(x)),]
#[1] 233 182 249
数据强>
x <- matrix(c(NA , NA, 284, 233, 182, 249, 177, 201, NA), byrow=TRUE, ncol=3)
要控制NA
值的容差(例如,仅排除至少有NA
个值的行):
x[rowSums(is.na(x))<2,]
答案 2 :(得分:0)
替换NAs:
x[which(is.na(x))] <- 0 # will be replaced by 0
使用apply函数删除具有两个或更多NA的行:
x[-which(apply(x, 1, function(xx) length(which(is.na(xx)))) >= 2),]
答案 3 :(得分:0)
我认为其他人回答你问题的第二部分。回答你的第一部分。
如果x是向量
x <- c(1,2,3,NA,4,NA)
x[is.na(x)] <- "anything"
如果x是数据框
x <- c(1,1,1,NA,1,NA)
df <- data.frame(var1=x,var2=x)
df$var1[is.na(df$var1)] <- -1