我在网上搜索了一下,但找不到解决我的问题的方法。
我有两个数据帧(不同长度):
dataSC_SC_combos
SURVEY_DATE DATA_COLLECTION_SITE
2012-07-01 Site 1
2012-07-01 Site 2
2012-08-10 Site 2
2012-08-10 Site 3
2012-08-11 Site 2
2012-09-20 Site 1
和
dataSC_FSITE_combos
SURVEY_DATE FISHING_SITE
2012-07-01 Site 1
2012-07-01 Site 3
2012-08-10 Site 2
2012-08-11 Site 1
2012-08-11 Site 1
2012-09-20 Site 1
2012-09-26 Site 1
2012-09-27 Site 1
2012-10-14 Site 1
我想从中找到数据和站点的独特组合, 又名。
2012-07-01 Site 1
2012-08-10 Site 2
2012-09-20 Site 1
然后从更大的数据集中获取 SURVEY_DATE 和 FISHING_SITE 或 SURVEY_DATE 和 DATA_COLLECTION_SITE 的这些独特组合的子集。这样我就得到了这样的东西:
SURVEY_DATE FISHING_SITE DATA_COLLECTION_SITE
2012-07-01 Site 1
2012-07-01 Site 1
2012-08-10 Site 2
2012-09-20 Site 1
2012-09-20 Site 1
有人知道这样做的好方法吗? 提前致谢。
最佳答案
可能有更好的解决方案,但你可以这样做:
d1 <- do.call("paste", df1)
d2 <- do.call("paste", df2)
> df1[d1%in%d2, ]
SURVEY_DATE DATA_COLLECTION_SITE
1 2012-07-01 Site 1
3 2012-08-10 Site 2
6 2012-09-20 Site 1
最终结果:
> df3 <- df1[d1%in%d2, ]
> df4 <- df2[d2%in%d1, ]
>
> df3$FISHING_SITE <- NA
> df4$DATA_COLLECTION_SITE <- NA
>
> rbind(df3, df4)
SURVEY_DATE DATA_COLLECTION_SITE FISHING_SITE
1 2012-07-01 Site 1 <NA>
3 2012-08-10 Site 2 <NA>
6 2012-09-20 Site 1 <NA>
11 2012-07-01 <NA> Site 1
31 2012-08-10 <NA> Site 2
61 2012-09-20 <NA> Site 1
关于r - 查找 2 个数据框中的公共(public)行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21895194/