【发布时间】:2014-09-09 13:25:04
【问题描述】:
我正在尝试从基于两列的数据框中的列中返回一个值。 所以这里是一个例子:
year<-c(rep("2010",3),rep("2011",3),rep("2012",3))
var1<-c(rep(c("aaa","bbb","ccc"),3))
var2<-c(0.5,0.45,0.1,0.3,0.23,0.58,0.8,0.75,0.44)
df1<-data.frame(year,var1,var2)
ID<-c("z1","z2","z3","z4","z5")
year<-c(2011,2011,2012,2010,2010)
var3<-c("aaa","aaa","ccc","bbb","ccc")
df2<-data.frame(ID,year,var3)
如果我只有一个条件,我会这样做:
df2$rate<-df1$var2[match(df2$year,df1$year)]
问题是我有两个,我尝试了一些方法,例如:
df2$rate<-df1$var2[match(df2$year,df1$year)& match(df2$var3,df1$var1)]
但不幸的是,我的尝试都没有奏效。有没有简单的方法可以根据两个条件返回值?
对于这种特殊情况,我可以将变量和年份合并到一个列中并应用以前的方法,但我正在寻找更优雅的解决方案。
df1$join<-paste(df1$var1,df1$year,sep="")
df2$join2<-paste(df2$var3,df2$year,sep="")
df2$rate<-df1$var2[match(df2$join2,df1$join)]
提前感谢您的任何建议
【问题讨论】: