Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何重新组织R中的单元格_R - Fatal编程技术网

如何重新组织R中的单元格

如何重新组织R中的单元格,r,R,我有这个df: structure(list(YEAR = c("2007", "2007", "2007", "2008", "2008", "2008", "2008", "2008", "2008", "2008"), MONTH = c("12", "10", "11", "01", "03", "05", "06", "08", "09", "10"), TOTAL = c(85055988L, 21567576L, 82763640L, 91007916L, 93936288L

我有这个df:

structure(list(YEAR = c("2007", "2007", "2007", "2008", "2008", 
"2008", "2008", "2008", "2008", "2008"), MONTH = c("12", "10", 
"11", "01", "03", "05", "06", "08", "09", "10"), TOTAL = c(85055988L, 
21567576L, 82763640L, 91007916L, 93936288L, 99646750L, 90091044L, 
98811936L, 96888876L, 100909236L)), .Names = c("YEAR", "MONTH", 
"TOTAL"), row.names = c("24801", "33863", "34055", "24973", "25046", 
"25295", "25384", "25541", "25861", "27319"), class = "data.frame")
我想将此数据框组织如下:

YEAR JAN  FEB  MARCH .... DEC
2009 TOTAL VALUE FOR EACH month goes to each corresponding cells.

我可以在R中轻松实现这一点吗?

dcast
xtabs
是需要考虑的选项之一:

xtabs(TOTAL ~ YEAR + MONTH, df)
#       MONTH
# YEAR          01        03        05        06        08        09        10        11        12
#   2007         0         0         0         0         0         0  21567576  82763640  85055988
#   2008  91007916  93936288  99646750  90091044  98811936  96888876 100909236         0         0

library(reshape2)
dcast(df, YEAR ~ MONTH, value.var="TOTAL", fun.aggregate=sum)
#   YEAR       01       03       05       06       08       09        10       11       12
# 1 2007        0        0        0        0        0        0  21567576 82763640 85055988
# 2 2008 91007916 93936288 99646750 90091044 98811936 96888876 100909236        0        0

请看包裹,谢谢。如果我想了解不同年份同一月份之间的差异,是否有一个函数可以使用?例如,我希望看到2010年和2011年6月的差异?@user1471980,为什么不使用普通子集呢?假设
dcast
步骤的输出是一个名为“df.wide”的
data.frame
,您可以使用(df.wide,df.wide[YEAR==“2011”,“06”]-df.wide[YEAR==“2010”,“06”])尝试类似的方法。当然,如果你真的想简化你的生活,我还建议你使用实时序列数据结构!如果您的数据由10年组成,并且您需要跟踪每年相同月份之间的差异,您将如何做到这一点?@user1471980,正如我在之前的评论中所指出的,我将使用“zoo”或“xts”等软件包中的实际时间序列对象或函数,以便您更方便地处理时间序列数据。