R - 根据每个相应列上的值选择列

时间:2016-02-13 12:46:47

标签: r dplyr

如果我有一个包含5列(A到E)和1000行的数据帧,则所有列都有大于0的各种数字,除了2列(D和E)只有零。如何评估每列,以便我只选择具有值的列?我想要一个包含列的新数据框(A B C)。在我的实际数据框中,我有一千列。我所知道的是dplyr select(dataframe,)

感谢。 Ĵ

2 个答案:

答案 0 :(得分:2)

您可以删除全部为0或NA的列:

x <- x[,colSums(x,na.rm = TRUE) > 0]

答案 1 :(得分:1)

另一个选项是Filter

Filter(function(x) any(!is.na(x)&x!=0), df1)

或者

Filter(function(x) sum(x, na.rm=TRUE), df1)

或者@docendodiscimus提到

Filter(any, df1)

它将提供有关类型转换的友好警告。

数据

df1 <- data.frame(Col1= c(NA, rep(0,5)), Col2= c(1:5, NA), Col3=0)