首页 > 解决方案 > 如果存在于 =.> 3 个数据框中(共 5 个)中,如何删除常见元素

问题描述

遵循此处的先前问题,并进行进一步的统计分析,我想知道是否可以删除>= 3 个数据帧中存在的常见峰值

a <- data.frame(ID = c("1", "2", "3", "4", "5"), peak = c("peak1", "peak2", "peak3", "peak4", "peak10"))
b <- data.frame(ID = c("1", "2", "3", "4"), peak = c("peak1","peak3", "peak20", "peak21"))
c <- data.frame(ID = c("1", "2", "3"), peak = c("peak1", "peak5", "peak3"))
d <- data.frame(ID = c("1", "2", "3", "4", "5", "6"),peak = c("peak1", "peak3", "peak7", "peak8", "peak11", "peak12"))
e <- data.frame(ID = c("1", "2", "3"), peak = c("peak1", "peak3",  "peak9"))

我想删除 >= 3 个数据帧中存在的常见峰值,并具有所需的输出:

a <- data.frame(ID = c("1", "2", "3", "4", "5"), peak = c("peak2",  "peak4", "peak10"))
b <- data.frame(ID = c("1", "2", "3", "4"), peak = c("peak20", "peak21"))
c <- data.frame(ID = c("1", "2", "3"), peak = c( "peak5"))
d <- data.frame(ID = c("1", "2", "3", "4", "5", "6"),peak = c(  "peak7", "peak8", "peak11", "peak12"))
e <- data.frame(ID = c("1", "2", "3"), peak = c ("peak9"))

标签: rdataframestore

解决方案


在基础 R 中,您可以执行以下操作:

my_list <- list(a = a, b = b, c = c, d = d, e = e)
y <-table(do.call(rbind, my_list)) < 3
list2env(lapply(my_list, function(x) subset(x, y[peak])), .GlobalEnv)

现在调用a或任何数据帧。

将结果保存在列表中是明智的。即lapply(my_list, function(x) subset(x, y[peak]))而不是将它们投射到环境中


推荐阅读