在R中按年份和月份分组的数据透视表

在R中按年份和月份分组的数据透视表,r,excel,pivot-table,R,Excel,Pivot Table,假设您有一个包含6列或更多列的数据框 我想创建一个类似这样的透视表(这是用Excel制作的) 如您所见,ID是按年份和月份分类的,它们的“值”是总和 我想在R中创建类似的东西(实际上不需要总计)。我试过dplyr,tidyr,但我不能得到我想要的 任何建议都是有用的可能的解决方案如下: library(dplyr) library(tidyr) # some test data I made up from you picture df <- dplyr::tibble(ID = c(

假设您有一个包含6列或更多列的数据框

我想创建一个类似这样的透视表(这是用Excel制作的)

如您所见,ID是按年份和月份分类的,它们的“值”是总和

我想在R中创建类似的东西(实际上不需要总计)。我试过dplyr,tidyr,但我不能得到我想要的


任何建议都是有用的

可能的解决方案如下:

library(dplyr)
library(tidyr)
# some test data I made up from you picture
df <- dplyr::tibble(ID = c("AS", "AS", "AD", "AF"),
                    Year = c(2019, 2019, 2019, 2019),
                    Month = c(1, 1, 1, 12),
                    Value1 = c(50, 60, 20, 30),
                    Value2 = c(40, 50, 10, 10),
                    Value3 = c(10, 15, 50, 65))
# calculations
df %>% 
  tidyr::pivot_longer(-c(ID, Year, Month), names_to = "Value_Group", values_to = "Value") %>% 
  dplyr::group_by(ID, Year, Month, Value_Group) %>% 
  dplyr::summarise(Value = sum(Value)) %>% 
  tidyr::pivot_wider(names_from = c(Year, Month, Value_Group), values_from = Value, values_fill = 0)


   ID    `2019_1_Value1` `2019_1_Value2` `2019_1_Value3` `2019_12_Value1` `2019_12_Value2` `2019_12_Value3`
  <chr>           <dbl>           <dbl>           <dbl>            <dbl>            <dbl>            <dbl>
1 AD                 20              10              50                0                0                0
2 AF                  0               0               0               30               10               65
3 AS                110              90              25                0                0                0    
库(dplyr)
图书馆(tidyr)
#我根据你的照片编造了一些测试数据
df%
tidyr::pivot_更长(-c(ID,年,月),名称_to=“Value\u Group”,值_to=“Value”)%>%
dplyr::分组依据(ID、年、月、值分组)%>%
dplyr::摘要(值=总和(值))%>%
tidyr::pivot\u加宽(名称\u from=c(年、月、值\u组),值\u from=Value,值\u fill=0)
ID`2019\u 1\u值1``2019\u 1\u值2``2019\u 1\u值3``2019\u 12\u值1``2019\u 12\u值2``2019\u 12\u值3`
公元20年10月50日
2 AF 0 0 30 10 65
3 AS 110 90 25 0 0 0

请使用
dput
或我们可以复制和使用的东西添加数据。图像是没有帮助的。还显示共享数据的预期输出。阅读和。我试过和它的作品!!!谢谢