我的回归分析给我带来麻烦,因为我的一个(或多个)自变量只有一个值。我没有时间检查100多个变量的因子水平数,所以我只想从我的数据集中排除所有只有一个值的变量。
我将如何去做?
我尝试了df<-df%>%select_if(length>1)
和df<-df%>%select_if(length()>1)
,但似乎都不起作用...。
答案 0 :(得分:2)
虚构数据
df <- data.frame("a" = sample(1:100, 10),
"b" = sample(1:100, 10),
"c" = rep(42, 10),
"d" = sample(LETTERS, 10))
确定是否唯一的功能
not_unique <- function(x) length(unique(x)) != 1
not_unique(df$a)
not_unique(df$c)
选择所需的列
df <- df %>% select_if(apply(df, 2, not_unique))
答案 1 :(得分:2)
这是一个data.table
解决方案
dt[,.SD,.SDcols = dt[,lapply(.SD,uniqueN)]>1]
答案 2 :(得分:2)
在Base-R
df <- df[sapply(sapply(df,unique),length)>=2]
或
df[sapply(df, function(x) length(unique(x)))>=2]