r-将信息从一个数据帧传输到另一个数据框架



这是我的问题。我有两个数据帧,df1和df2。我想在df1中添加一个名为issp的列,该列是由df2中的sp列获取的值的函数。df1和df2共有一个名为loc的列,但它在df2中重复了很多(df2中~90k行,df1中5k行)。

其思想是通过给列issp值1来识别df1中包含特定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`

实现的更好方法

#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

您有一个语法错误:

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

应该是

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

最新更新