我有一个像这样的数据框

1    1    1    K    1    K    K
2    1    2    K    1    K    K
3    8    3    K    1    K    K
4    8    2    K    1    K    K
1    1    1    K    1    K    K
2    1    2    K    1    K    K


我想删除所有具有相同值的列,即K,所以我的结果将是这样

1    1    1    1
2    1    2    1
3    8    3    1
4    8    2    1
1    1    1    1
2    1    2    1


我试图在for by列中进行迭代,但是我什么也没得到。有任何想法吗?提前致谢

最佳答案

要选择具有多个值的列,而与类型无关:

uniquelength <- sapply(d,function(x) length(unique(x)))
d <- subset(d, select=uniquelength>1)




(糟糕,Roman的问题是对的,这也可能使您的第5栏消失)

也许(编辑:感谢评论!)

isfac <- sapply(d,inherits,"factor")
d <- subset(d,select=!isfac | uniquelength>1)


要么

d <- d[,!isfac | uniquelength>1]

08-24 15:55