我有一个像这样的数据框
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]