我的表格结构如:Year,Month,ValueA,ValueB,ValueC等。我想按年份和月份对表格进行分组,但是根据列值的差异进行汇总。
Year Month ValueA ValueB ValueC
2016 1 40 53 49
2017 2 29 31 26
2016 1 25 20 31
2017 2 22 30 29
我想输出一个看起来像的表:
Year Month ValueA ValueB ValueC
2016 1 15 33 18
2017 2 7 1 3
我该怎么做?非常感谢任何帮助。
答案 0 :(得分:4)
我们可以使用基础R aggregate
和Year
和Month
分组来计算两行之间的差异。
abs(aggregate(.~Year + Month, df, diff))
# Year Month ValueA ValueB ValueC
#1 2016 1 15 33 18
#2 2017 2 7 1 3
答案 1 :(得分:2)
以下是使用dplyr
包的方法:
library(tidyverse)
df <- data.frame(Year = c(2016, 2017, 2016, 2017),
Month = c(1, 2, 1, 2),
ValueA = c(40, 29, 25, 22),
ValueB = c(53, 31, 20, 30),
ValueC = c(49, 26, 31, 29))
df1 <- df %>%
group_by(Year, Month) %>%
summarize(ValueA = abs(diff(ValueA)), ValueB = abs(diff(ValueB)), ValueC = abs(diff(ValueC)))
答案 2 :(得分:1)
您可以使用plyr
使用ddply(df, .(Year, Month), numcolwise(diff))
中描述的方法:
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"