我试图按月和年总结R中的数据。我正在使用ddply函数来总结数据但我想改变它的外观并进行正常的转置并不能给我想要的结果。我正在加载带有每日河流旁路数据的csv文件。数据包含以下字段:日期,年,月,日和旁路。我使用以下代码来总结我的文件:
summary<- ddply(file,c("Year", "Month"), summarise, Sum = round(sum(Bypass*1.9835),0))
summary
输出如下:
Year Month Sum
1946 10 1791
1946 11 1575
1946 12 1129
1947 1 823
1947 2 750
1947 3 1023
(这将持续约61年的数据)
所以我的问题...... 有没有办法按以下方式将数据转换为输出:
Month
Year 1 2 3 4 5 6 7 8 9 10 11 12
1946 1791 1575 1129
1947 823 750 1023
我只复制了一份数据样本,但是它已经过了2007年。
提前致谢
答案 0 :(得分:1)
library(reshape2)
dcast(df, iYear ~ Month, value.var='Sum')
输出:
iYear 1 2 3 10 11 12
1 1946 NA NA NA 1791 1575 1129
2 1947 823 750 1023 NA NA NA
如果您想用零替换NA:
df1 <- dcast(df, iYear ~ Month, value.var='Sum')
df1[is.na(df1)] <- 0
iYear 1 2 3 10 11 12
1 1946 0 0 0 1791 1575 1129
2 1947 823 750 1023 0 0 0
数据:
df <- structure(list(iYear = c(1946L, 1946L, 1946L, 1947L, 1947L, 1947L
), Month = c(10L, 11L, 12L, 1L, 2L, 3L), Sum = c(1791L, 1575L,
1129L, 823L, 750L, 1023L)), .Names = c("iYear", "Month", "Sum"
), class = "data.frame", row.names = c(NA, -6L))
iYear Month Sum
1 1946 10 1791
2 1946 11 1575
3 1946 12 1129
4 1947 1 823
5 1947 2 750
6 1947 3 1023