首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何找到两个数据集之间的相似性,并生成由这些重合的行组成的新数据帧?

如何找到两个数据集之间的相似性,并生成由这些重合的行组成的新数据帧?
EN

Stack Overflow用户
提问于 2019-10-17 16:33:15
回答 1查看 64关注 0票数 0

我在一个文件中有超过1000个站的无线电探空仪观测结果,以及我真正感兴趣的站(81个)的列表。我需要创建一个新的数据框,其中将包括第一个文件的行。

因此,我有两个从.txt文件导入到R的数据集。第一个是数据框6694668x6,第二个是81x1,其中第二个数据集的行与第一个数据集的一些第一列值(值看起来像这样: ACM00078861)一致。

代码语言:javascript
运行
复制
d = data.frame(matrix(ncol = 6, nrow = 0)) 
for(i in 1:81){ 
  for (j in 1:6694668) {
    if(stations[i,1] == ghgt_00z.mly[j,1]){ 
      rbind(d,ghgt_00z.mly[j,] ) 
      j + 1 
    } else {j+1}
  }
}

我想生成一个新的数据帧,它看起来像"ghgt_00z.mly",但只包含" stations“中列出的站点的行。Ofc,代码已经运行了几天,我只留下了警告消息。求求你救救我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-17 16:46:56

如何做到这一点有很多选择。我几乎都使用经典的merge()

代码语言:javascript
运行
复制
res <- merge(x=stations, y=ghgt_00z.mly, by='common_coulmn_name', all.x = TRUE)

其中common_coulmn_name是两个df中存在的相同列名。因此,您已经将两个df与两个数据集中存在的所有列组合在一起,如果需要,可以删除它们。

第二个有用的选项是:

代码语言:javascript
运行
复制
library(dplyr)
inp <- ghgt_00z.mly$column_of_interest
res <- filter(stations, grepl(paste(inp, collapse="|"), column_in_stations))

其中inpcolumn_in_stations应该包含一些相同的值。

由于我没有数据集,我无法检查这些解决方案,因此我不能保证它们是否正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58428228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档