是否有一个R函数来过滤一个数据帧,其中保留了所有匹配值的列?
我有一个大数据框,有5行,但有100k列。我希望保留列中的所有值都匹配的列 这是数据帧的示例是否有一个R函数来过滤一个数据帧,其中保留了所有匹配值的列?,r,dataframe,R,Dataframe,我有一个大数据框,有5行,但有100k列。我希望保留列中的所有值都匹配的列 这是数据帧的示例 > df Mouse JAX00000010 JAX00000010r UNCHS000003 JAX00240606 JAX00240613 JAX00240636 UNCHS000005 1 407 BF BF BF BF BF BF BF 2 410
> df
Mouse JAX00000010 JAX00000010r UNCHS000003 JAX00240606 JAX00240613 JAX00240636 UNCHS000005
1 407 BF BF BF BF BF BF BF
2 410 BH BH BH BH BH BH BH
3 426 BD BD BD BD BD BD BD
4 447 BC BC BC BC BC BC BC
5 87 BF BF BF BF BF BF BF
我想保留所有具有相同值的列,例如'BB'。我没有遇到过这样的函数,尽管我确信它很简单。谢谢你的帮助 试试看
df[, sapply(df, function(x) length(unique(x)) == 1]
或者使用过滤器
Filter(function(x) length(unique(x)) == 1, df)
试一试
或者使用过滤器
Filter(function(x) length(unique(x)) == 1, df)
在R基中:
# Your data
df <- read.table(header = TRUE, text = "
Mouse JAX00000010 JAX00000010r UNCHS000003 JAX00240606 JAX00240613 JAX00240636 UNCHS000005
1 407 BF BF BF BF BB BF BF
2 410 BH BH BH BH BB BH BH
3 426 BD BD BD BD BB BD BD
4 447 BC BC BC BC BB BC BC
5 87 BF BF BF BF BB BF BF")
# Get cols
get.cols <- which(apply(df[,-1] == "BB", 2, all))
df[,c(1, get.cols + 1)]
# Mouse JAX00240613
#1 407 BB
#2 410 BB
#3 426 BB
#4 447 BB
#5 87 BB
#您的数据
基面R中的df
# Your data
df <- read.table(header = TRUE, text = "
Mouse JAX00000010 JAX00000010r UNCHS000003 JAX00240606 JAX00240613 JAX00240636 UNCHS000005
1 407 BF BF BF BF BB BF BF
2 410 BH BH BH BH BB BH BH
3 426 BD BD BD BD BB BD BD
4 447 BC BC BC BC BB BC BC
5 87 BF BF BF BF BB BF BF")
# Get cols
get.cols <- which(apply(df[,-1] == "BB", 2, all))
df[,c(1, get.cols + 1)]
# Mouse JAX00240613
#1 407 BB
#2 410 BB
#3 426 BB
#4 447 BB
#5 87 BB
#您的数据
dfApurrr
进近:
library(purrr)
df %>% keep(~ length(unique(.x)) == 1)
注意-您可以使用discard
:df%>%discard(~length(unique(.x))==1)
Apurr
方法:
library(purrr)
df %>% keep(~ length(unique(.x)) == 1)
注意-您可以使用discard
:df%>%discard(~length(unique(.x))==1)
感谢您的快速回答。我使用了@JasonAizkalns的purrr解决方案,因为我的数据帧大小的过滤函数花费了太长的时间。感谢您的快速回答。我使用@JasonAizkalns的purrr解决方案,因为对于我的数据帧大小,过滤函数花费的时间太长。