![](/img/trans.png)
[英]How to remove $ from all values in a data frame column in a character vector?
[英]Remove column from data frame if all values in the column are identical
如果列具有相同的值,从数据框中删除列的最有效方法是什么?
这是一个示例df,但是我的df超过10 ^ 8列,因此我正在寻找最有效的方法:
df <- data.frame(c(0, 0, 0, 0, 1), c(0, 0, 0, 0, 0), c(1, 1, 1, 0, 1), c(1, 1, 1, 1, 1))
在此示例中,应删除列2和4。
谢谢!
一种基于diff
的解决方案可能是:
df[,apply(df,2,function(x)!all(diff(x)==0))]
# c.0..0..0..0..1. c.1..1..1..0..1.
# 1 0 1
# 2 0 1
# 3 0 1
# 4 0 0
# 5 1 1
一个plyr
解决方案:
library(plyr)
df <- df[,colwise(function(x) length(unique(x)))(df)>1]
我们可以将dplyr包中的select_if
函数与用户定义的函数一起使用,以检查每列中的唯一值是否为两个或多个。
library(dplyr)
# Define a function to check if two or more values in a vector
not_unique <- function(vec) length(unique(vec)) > 1
# Use select_if to select the column
df2 <- df %>% select_if(not_unique)
df2
# c.0..0..0..0..1. c.1..1..1..0..1.
# 1 0 1
# 2 0 1
# 3 0 1
# 4 0 0
# 5 1 1
我们也可以从基数R中使用sapply
。
df[, sapply(df, not_unique)]
# c.0..0..0..0..1. c.1..1..1..0..1.
# 1 0 1
# 2 0 1
# 3 0 1
# 4 0 0
# 5 1 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.