R 如何根据唯一值的数量选择列?
我的回归分析给我带来了麻烦,因为我的一个(或多个)自变量只有一个值。我没有时间检查100多个变量的因子级别数,所以我只想从数据集中排除只有一个值的所有变量 我该怎么做呢 我尝试了R 如何根据唯一值的数量选择列?,r,dplyr,R,Dplyr,我的回归分析给我带来了麻烦,因为我的一个(或多个)自变量只有一个值。我没有时间检查100多个变量的因子级别数,所以我只想从数据集中排除只有一个值的所有变量 我该怎么做呢 我尝试了df%select\u if(length>1)和df%select\u if(length()>1),但这两种方法似乎都不起作用 编造的数据 df <- data.frame("a" = sample(1:100, 10), "b" = sample(1:100, 10),
df%select\u if(length>1)
和df%select\u if(length()>1)
,但这两种方法似乎都不起作用 编造的数据
df <- data.frame("a" = sample(1:100, 10),
"b" = sample(1:100, 10),
"c" = rep(42, 10),
"d" = sample(LETTERS, 10))
df这是一个数据表
解决方案
dt[,.SD,.SDcols=dt[,lapply(.SD,uniqueN)]>1]
在Base-R中
df <- df[sapply(sapply(df,unique),length)>=2]
请阅读相关信息以及如何给出建议。这将使其他人更容易帮助您。在良好的旧基础R:df中,将此标记为答案,因为尽管我理解程度很低,但我可以完全理解代码:)
df <- df %>% select_if(apply(df, 2, not_unique))
df <- df[sapply(sapply(df,unique),length)>=2]
df[sapply(df, function(x) length(unique(x)))>=2]