从R中具有常量非缺失值的数据集中删除列

从R中具有常量非缺失值的数据集中删除列,r,constants,missing-data,R,Constants,Missing Data,考虑以下数据框: data <- data.frame(a=c("Yes","Yes",NA),b=c(2,4,3),c=c(NA,3,3),d=c("B","B","B")) a b c d 1 Yes 2 NA B 2 Yes 4 3 B 3 <NA> 3 3 B 将sapply与is.na()和any()一起使用: 将sapply与is.na()和any()一起使用: 试一试 试一试 是否需要确定哪些列满足此条件?删除它们很简单。我尝试了:data

考虑以下数据框:

data <- data.frame(a=c("Yes","Yes",NA),b=c(2,4,3),c=c(NA,3,3),d=c("B","B","B"))

     a b  c d
1  Yes 2 NA B
2  Yes 4  3 B
3 <NA> 3  3 B
将sapply与is.na()和any()一起使用:

将sapply与is.na()和any()一起使用:

试一试

试一试


是否需要确定哪些列满足此条件?删除它们很简单。我尝试了:data[sapply(data,function(x)length(unique(x))>1)],但没有删除列a和列c您需要确定哪些列满足此条件吗?删除它们很简单。我尝试过:data[sapply(data,function(x)length(unique(x))>1)],但没有删除列a和列c我不想删除缺少数据的列…我的主要目标是删除具有相同值的列,如果某个列有一些缺失,其余的值也一样,我想删除这些列。考虑我不想删除列的数据有缺失的数据…我的主要目的是删除具有相同值的列,如果某个列有一些缺失,其余的值是相同的,我也想删除这些列。
  b
1 2
2 4
3 3
> data[sapply(data, function(data) !any(is.na(data)))] 
  b
1 2
2 4
3 3
data[sapply(data, function(x) length(unique(na.omit(x)))) > 1]

#   b
# 1 2
# 2 4
# 3 3