R:如何将数据框列表与特定列相交

标签 r list dataframe

我试图在 data.frames 列表的特定列中找到所有匹配值。但是,我不断收到 character(0) 的返回值。

我试过以下方法: 简单子(monad)集(非常耗时)-> 例如数据[[i]][[i]] lapply w/Reduce 和相交(如所见 here

LocA<-data.frame(obs.date=c("2018-01-10","2018-01-14","2018-01-20),
obs.count=c(2,0,1))
LocB<-data.frame(obs.date=c("2018-01-09","2018-01-14","2018-01-20),
obs.count=c(0,3,5))
LocC<-data.frame(obs.date=c("2018-01-12","2018-01-14","2018-01-19"),
obs.count=c(2,0,1))
LocD<-data.frame(obs.date=c("2018-01-11","2018-01-16","2018-01-21"),
obs.count=c(2,0,1))

dfList<-list(LocA,LocB,LocC,LocD)

##List of all dates 

lapply(dfList,'[[',1)
[1]"2018-01-10" "2018-01-14" "2018-01-20" "2018-01-09"...

尝试(失败)

>Reduce(intersect,lapply(dfList,'[[',1))
character (0)

我希望此函数的输出是标识共享同一日期的 data.frames 的输出。

*如果有人知道如何识别共享日期并将其变异为单个数据框,则额外的微笑,其中..Col1 = 数据框名称,Col2=obs.date,Col3 = obs.count

最佳答案

您可以先合并所有数据框,这样您就只有一个:

a <- Reduce(function(x, y) merge(x, y, all = TRUE), dfList)

或者你可以像这样合并它们:

a <-rbind(LocA,LocB,LocC,LocD)

之后,您可以提取所有重复项:

b <- a[duplicated(a$obs.date), ]

或者如果您想保留所有唯一的并保留重复的:

c <- a[!duplicated(a$obs.date), ]

关于R:如何将数据框列表与特定列相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57288667/

相关文章:

css - R Shiny : relative css size for plotOutput not working

在plot_ly中重新定义动画 slider 的标签

python - 如何通过搜索特定关键字来打印列表中的列表?

python - 类型错误 : '_AtIndexer' object is not callable in pandas

r - 在 r 中绘制没有 google map API 的城市 map

r - 在ggplot中绘制混合效果模型

r - R:如果列包含重复的给定组,则创建虚拟对象

python - Pandas 数据框 : Dropping rows after meeting conditions in columns

python - 当键是字符串而值是列表时,如何填充 python 字典?

c# - 将 List<Object> 转换为 System.Array[]