【问题标题】:Summing Values based on Hour and Month and Re-arranging Summed Time Series基于小时和月的值求和并重新排列求和时间序列
【发布时间】:2016-12-01 15:34:52
【问题描述】:

我正在尝试汇总(求和)跨月和跨小时的值,并重新排列求和的数据,以使小时和月位于不同的“轴”上。我希望 hour 成为列标题month 成为行标题,每个单元格中都有总和值。这就是我的意思,通过一个虚拟数据示例(显然存在 12 个月,真实数据为 24 小时):

Month <- c(1,1,2,2,3,3,3,4,4,4,5,5,5,5,6,7,8,9,10,11,12)
Hour <- c(4,1,3,2,5,5,1,4,3,6,0,0,2,3,1,2,3,4,5,6,2)
Value <- c(0.1,0.4,0.02,0.1,0.1,0.2,0.02,0.01,0.01,0.02,0.1,0.3,0.2,0.1,0.2, 0.1,0.3,0.1,0.01,0.01,0.1)

z <- data.frame(Month, Hour, Value)
head(z)
Month Hour Value
  1    4  0.10
  1    1  0.40
  2    3  0.02
  2    2  0.10
  3    5  0.10
  3    5  0.20

我想要的输出,小时 = 列标题(总共 24 个,这仅显示前 6 小时),月 = 行标题(总共 12 个)

z

    0    1    2    3    4    5    6  
1  0.3  0.2  0.1  0.7  0.1  1.1  0.7
2  0.1  0.1  0.8  1.7  0.2  0.1  0.6
3  0.2  0.7  0.1  0.4  2.1  1.3  0.1
4  0.1  0.2  0.2  0.1  3.1  0.1  0.7
5  0.7  0.8  1.2  0.2  0.4  0.1  0.2
6  0.5  0.2  3.0  0.8  0.2  5.1  1.2
7  0.5  0.2  3.0  0.8  0.2  5.1  1.2
8  0.5  0.2  3.0  0.8  0.2  5.1  1.2
9  0.5  0.2  3.0  0.8  0.2  5.1  1.2
10  0.5  0.2  3.0  0.8  0.2  5.1  1.2
11  0.5  0.2  3.0  0.8  0.2  5.1  1.2
12  0.5  0.2  3.0  0.8  0.2  5.1  1.2

【问题讨论】:

  • 预期输出中的这些值是否正确?
  • 不……他们不是。只是填写以了解我在寻找什么。 Xtabs 有效!

标签: r date dataframe


【解决方案1】:

我们可以使用xtabs创建列联表

xtabs(Value~Month+Hour)

【讨论】:

  • 谢谢阿克伦。有没有办法安排0-23的时间和1-12的月份?此方法有效,但目前它通过第一个字符(1、10、11、12、2、3、4...等)。
  • @Kelsey 我猜你在原始数据集中的列是factor。您可以将原始数据集列更改为numeric,即Month &lt;- as.numeric(as.character(Month)); Hour &lt;- as.numeric(as.character(Hour))
  • 太棒了。这就是问题所在。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-15
  • 2021-03-20
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
相关资源
最近更新 更多