我有两个数据框
数据帧1大约有一百万行。它有两列,分别名为“行”和“列”,具有另一数据帧(即数据帧2)的行和列的索引。
我想从数据帧2中提取值,并为数据帧1中的每一行使用名为“行”和“列”的列中列出的索引。我使用了一个简单的 for循环来获取解决方案,但是这很耗时,大约需要9分钟,R中的函数还有其他方法可以解决此问题吗?
for(i in 1:nrow(datafram1)) { dataframe1$value[i] = dataframe2[dataframe1$row[i],dataframe1$columns[i]] }
答案 0 :(得分:1)
您实际上不需要for循环即可执行此操作。只需使用行和列名称将新列添加到数据框中:
DataFrame1$value <- DataFrame2[DataFrame1$row, DataFrame1$column]
这应该工作更快。如果要尝试其他方法,可以尝试将值添加到新向量中,然后使用cbind
将向量连接到数据帧。您正在尝试在循环中更新整个数据帧的事实很可能会减慢其速度。
答案 1 :(得分:0)
让循环只考虑df1中的行,则可以削减df2上的多余子项,然后使用cbind
:
dataframe2 <- dataframe2[nrow(dataframe1),]
df3 <- cbind(dataframe1, dataframe2)
答案 2 :(得分:0)
也许您可以尝试下面的代码
dataframe1$value <- dataframe2[as.matrix(dataframe1[c("row","columns")])]