我有一个像这样的数据框
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]
关于从数据框中删除具有相同值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8388417/