将信息从数据帧传输到另一个数据帧

时间:2014-04-15 15:20:06

标签: r dataframe

这是我的问题。我有两个数据帧,df1和df2。我希望将df1中名为issp的列添加到df2中名为sp的列所使用的值的函数中。 df1和df2共有一个名为loc的列,但它在df2中重复了很多次(df2中的~90k行,df1中的5k行)。

我们的想法是通过向列issp提供值1来识别df1中包含specie sp的位置。

这是我使用的脚本:

for (i in (1:length(df2$loc)) {
  if (df2[i, "sp"]==1) {
      df1(which[df1$loc==df2[i, "loc"]],)$issp = 1 
  }
}

它没有工作,R发回给我以下错误:

Error in `*tmp*`[df1[, "loc"] == df2[i, "loc"]] : 
  object of type 'closure' is not subsettable`

2 个答案:

答案 0 :(得分:1)

更好的方法

#Get indices of sp in df2 that are 1
df2.sp.idx <-which(df2$sp ==1)
df1$issp <-NA
df1$issp[which(df1$loc %in% df2$loc[df2.sp.idx])] <-1

答案 1 :(得分:0)

您遇到语法错误:

df1(which[df1$loc==df2[i, "loc"]],)$issp = 1 

应该是

df1[which(df1$loc==df2[i, "loc"]),]$issp = 1