我在一个文件中有超过1000个站的无线电探空仪观测结果,以及我真正感兴趣的站(81个)的列表。我需要创建一个新的数据框,其中将包括第一个文件的行。
因此,我有两个从.txt文件导入到R的数据集。第一个是数据框6694668x6,第二个是81x1,其中第二个数据集的行与第一个数据集的一些第一列值(值看起来像这样: ACM00078861)一致。
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,代码已经运行了几天,我只留下了警告消息。求求你救救我!
发布于 2019-10-17 16:46:56
如何做到这一点有很多选择。我几乎都使用经典的merge()
res <- merge(x=stations, y=ghgt_00z.mly, by='common_coulmn_name', all.x = TRUE)其中common_coulmn_name是两个df中存在的相同列名。因此,您已经将两个df与两个数据集中存在的所有列组合在一起,如果需要,可以删除它们。
第二个有用的选项是:
library(dplyr)
inp <- ghgt_00z.mly$column_of_interest
res <- filter(stations, grepl(paste(inp, collapse="|"), column_in_stations))其中inp和column_in_stations应该包含一些相同的值。
由于我没有数据集,我无法检查这些解决方案,因此我不能保证它们是否正常工作。
https://stackoverflow.com/questions/58428228
复制相似问题