如何在 R 中加入来自 2 个不同 csv 文件的数据?
Posted
技术标签:
【中文标题】如何在 R 中加入来自 2 个不同 csv 文件的数据?【英文标题】:How to join data from 2 different csv-files in R? 【发布时间】:2015-10-04 10:54:21 【问题描述】:我有以下问题:在一个 csv 文件中,我有一列用于物种,一个用于横断面,一个用于年份,一个用于 AUC。在另一个 csv 文件中,我有一列用于横断面,一个用于年份,一个用于降水,一个用于温度。现在我想以某种方式加入 R 中的文件,我可以从第二个 csv 中获取物种和 AUC 的列,以及从第一个 csv 获取其余列的列。 最后我想得到一个带有横断面ID、年、日、月、物种、regional_gam(=AUC)、降水和LST(=温度)的文件。 因此,基本上需要将 2008 年每天 TR001 的降水量/LST 值分配给每个具有 2008 年和 TR001 的 AUC 值的物种。 谢谢!
【问题讨论】:
查看read.csv
和merge
-- 这两个函数应该可以解决问题。
除了@Eric***s 的评论之外,如果您能提供当前输入文件数据的(格式清晰的)样本和预期输出,将会很有帮助。
transect_id,species,year,regional_gam,prop_pheno_sampled TR002,Allancastria cerisyi,2010,0,0.594080041 TR014,Allancastria cerisyi,2010,27,0.119491204 TR012,Allancastria cerisyi,2011,282.05757,283.4 -data and that: transect_id,year,day,month,LST,precipitation TR001,2008,1,1,11.47578335,0 TR002,2008,1,1,11.47576523,0 TR007,2008,1,1,6.603372097,0 TR009 ,2008,1,1,13.25433731,0 是天气数据。感谢tipp,我知道这两个功能,但到目前为止我还没有得到它。但后来我知道我必须朝着这个方向进一步尝试。
对不起,糟糕的格式,这是我第一次使用这个页面的“提问”部分。
然后只需使用编辑按钮并将您的数据添加到原始帖子并使用代码突出显示 :-)
【参考方案1】:
请使用
library(dplyr)
df1<- read.csv("F:\\Test_Anything\\Merge\\1.csv" , head(T))
df2<-read.csv("F:\\Test_Anything\\Merge\\2.csv" , head(T))
r <- merge(df1,df2,by=c('NAME','NAME'),all.x=T)
write.csv(r,"F:\\Test_Anything\\Merge\\DF.csv" , all(T) )
【讨论】:
【参考方案2】:使用read.csv
,然后使用merge
。
将两个 csv 文件加载到 R 中。(不要忘记确保它们的公共变量共享相同的名称!)。
df1<-read.csv(dat1,head=T)
df2<-read.csv(dat2,head=T)
通过它们的共享变量将数据框合并在一起,并添加参数 all.x=T(默认值)以确保所有行都保留在包含物种的数据库中。
merge(df1,df2,by=c('transect_id','year'),all.x=T)
使用测试数据查看实际情况:
test<-data.frame(sp=c(rep(letters[1:10],2)),t=c(rep(1:3,2,20)),y=c(rep(2000:2008,len=20)),AUC=1:20)
test2<-data.frame(t=c(rep(1:3,2,9)),y=c(rep(2000:2008,len=9)),ppt=c(1:9),temp=c(11:19))
merge(test,test2,by=c('t','y'),all.x=T)
【讨论】:
嘿,谢谢,我试过了,在对我的数据集进行了一些更改后,它实际上可以像我想象的那样使用合并 :) 非常感谢! 没问题!另外,请注意:默认情况下,数据框会合并到具有它们名称的列上,但可以通过by.x
和by.y
给出单独的列规范。如果可以,请接受这个答案:)。以上是关于如何在 R 中加入来自 2 个不同 csv 文件的数据?的主要内容,如果未能解决你的问题,请参考以下文章