假設您有以下兩個data.frames:dplyr GROUP_BY和總結了兩個DF與相同的列名
set.seed(1)
x <- letters[1:10]
df1 <- data.frame(x)
z <- rnorm(20,100,10)
df2 <- data.frame(x,z)
(注意,這兩個DFS有一列名爲「X」)
和你要總結DF2 $的z爲「X」組中的總額DF1這樣的:
df1 %.%
group_by(x) %.%
summarize(
z = sum(df2$z[df2$x == x])
)
這將返回錯誤「無效的索引類型整數」(翻譯)。
但是,當我在這兩個DFS中的任何一個改變列「×」的名字,它的工作原理:
df2 <- data.frame(x1 = x,z) #column is now named "x1", it would also work if the name was changed in df1
df1 %.%
group_by(x) %.%
summarize(
z = sum(df2$z[df2$x1 == x])
)
# x z
#1 a 208.8533
#2 b 205.7349
#3 c 185.4313
#4 d 193.8058
#5 e 214.5444
#6 f 191.3460
#7 g 204.7124
#8 h 216.8216
#9 i 213.9700
#10 j 202.8851
我可以想像很多情況下,你有兩個DFS具有相同的列名(就像一個「ID」列),這可能是一個問題,除非有一個簡單的方法。
我錯過了什麼嗎?對於這個例子,可能有其他方法可以得到相同的結果,但我有興趣瞭解dplyr是否可行(或者爲什麼不)。
(兩個DFS不必然需要具有相同的獨特的 「X」 值在這個例子中)
@阿倫你能證明這將如何在這個例子中工作嗎? –
@阿倫謝謝你回答一個例子。這似乎是一個不同的方法很好的解決方案。我想知道是否可能有其他情況(可能在總結功能中更復雜),在這種情況下使用我的問題中指出的方法可能仍然非常有用(但現在我不能拿出一個很好的例子) –
done( https://github.com/hadley/dplyr/issues/417) –