【发布时间】:2018-05-15 03:45:51
【问题描述】:
而不是像这样进行嵌套的 for 循环:
for (rowAll in 1:nrow(groupDataUnadjusted)) {
year <- groupDataUnadjusted[rowAll, "year"]
income <- groupDataUnadjusted[rowAll, "income_group"]
joint <- groupDataUnadjusted[rowAll, "Joint"]
child <- groupDataUnadjusted[rowAll, "children"]
for (rowPuf in 1:nrow(nationalPuf)) {
yearPuf <- nationalPuf[rowPuf, "year"]
incomePuf <- nationalPuf[rowPuf, "income_group"]
jointPuf <- nationalPuf[rowPuf, "Joint"]
childPuf <- nationalPuf[rowPuf, "children"]
if ((year == yearPuf) && (income == incomePuf) && (joint == jointPuf) && (child == childPuf)) {
groupDataUnadjusted[rowAll, 'tax_difference_pct'] <- groupDataUnadjusted[rowAll, 'tax_difference_pct'] + nationalPuf[rowPuf, 'diff']
break
}
}
}
groupDataAdjusted <- groupDataUnadjusted
我觉得必须有一种更快的方法来找到两个数据帧之间的对应行。我通过采用数据框、不同长度并查看三列相同的位置来进行匹配。如果它们相同,我知道那一行是它们之间的匹配。然后我从该行中取出一个值并将其添加到另一个数据框中的值中。
但在 R 中一定有更好的方法。
【问题讨论】:
-
请提供示例数据。
-
@CCurtis 没必要。这是一般情况。
-
实际上,这里有一个示例会有所帮助,因为除了加入之外,您还在两个数据帧中匹配的组上聚合
diff变量。 -
@incodeverita 这正是我的观点。一个简单的问题不应该有一个抽象的例子,特别是如果这是你可以用谷歌搜索解决的问题。特别是在数据操作中,一个明显的例子就是一切。不要坐在这里认为这里投票的每个人都是错误的。
标签: r dataframe dplyr nested-loops tidyverse