我有一个如下所示的数据框:
GooseIPA HeadHunter BlindPig MosaicPromise HopHunter
9 10 8 6 10
0 6 8 4 1
0 2 3 1 0
如果colSums <=10
我想用NA替换该列中的所有值。
输出如下:
GooseIPA HeadHunter BlindPig MosaicPromise HopHunter
NA 10 8 6 10
NA 6 8 4 1
NA 2 3 1 0
答案 0 :(得分:2)
如果您的数据框名为df
,则可以使用:
df[,colSums(df)<=10]<-NA
答案 1 :(得分:1)
以下是sapply
的方法。
is.na(df) <- sapply(df, function(x) (sum(x) < 10))
这个想法是sapply
遍历变量并检查每个变量的总和是否小于10,如果是,则为is.na
分配TRUE。
df
GooseIPA HeadHunter BlindPig MosaicPromise HopHunter
1 NA 10 8 6 10
2 NA 6 8 4 1
3 NA 2 3 1 0
同样的方法,但colSums
可能更快
is.na(df) <- (colSums(df) < 10)
数据强>
df <-
dput(df)
structure(list(GooseIPA = c(9L, 0L, 0L), HeadHunter = c(10L,
6L, 2L), BlindPig = c(8L, 8L, 3L), MosaicPromise = c(6L, 4L,
1L), HopHunter = c(10L, 1L, 0L)), .Names = c("GooseIPA", "HeadHunter",
"BlindPig", "MosaicPromise", "HopHunter"), class = "data.frame", row.names = c(NA,
-3L))