r - 查找 2 个数据框中的公共(public)行

标签 r

我在网上搜索了一下,但找不到解决我的问题的方法。

我有两个数据帧(不同长度):

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/

相关文章:

R caret/rfe/bayesglm 特征选择

r - shinyapps.io Web 应用程序中数据目录的正确位置

r - 预测 3 个水平的因子并返回每个因子的百分比

r - data.frame 和 matrix 对象的不同子集方法之间的时间差

将信息分布在多个 View 中进行检索

r - 用 dplyr 从长到宽

r - 如何在 R 和 ggplot2 中绘制等于 0 的双变量函数?

r - R中重叠的唯一数据帧

r - 在 R 中调整帕累托图上的第二个 y 轴

javascript - 使用 htmlwidgets::scaffoldWidget 将外部 js 库合并为一个新包以进入 Shiny 的应用程序