【问题标题】:Summarize data.frame by dates in R按 R 中的日期汇总 data.frame
【发布时间】:2018-12-26 07:35:17
【问题描述】:

可重现的输入:

df <- data.frame(
  "Date" = sprintf("%02d-Jan", 1:20),
  "Type of Weather" = c(rep("Cloudy", 3), rep("Rainy", 7), rep("Cloudy", 5), rep("Sunny", 5))
)
head(df)
     Date Type.of.Weather
1: 01-Jan          Cloudy
2: 02-Jan          Cloudy
3: 03-Jan          Cloudy
4: 04-Jan           Rainy
5: 05-Jan           Rainy
6: 06-Jan           Rainy

预期输出:

【问题讨论】:

  • 嗨马纳夫。请花一些时间在 SO 上查看how to ask 问题,然后编辑您的帖子以提供minimal reproducible example。我们希望看到您付出相当大的努力。这包括 (1) 给你的问题一个合理的标题,(2) 有一个清晰的问题陈述,(3) 以可重现的方式共享代码和示例数据,以及 (4) 显示你的预期输出。截图没用。

标签: r


【解决方案1】:

我会使用 data.table 并执行以下操作:

library(data.table)
setDT(df)
ndf <- df[, 
          .(Date = paste(Date[1], "to", Date[.N]), weather = Type.of.Weather[1]),
          rleid(Type.of.Weather)
          ][,
            rleid := NULL
           ][]
ndf
               Date weather
1: 01-Jan to 03-Jan  Cloudy
2: 04-Jan to 10-Jan   Rainy
3: 11-Jan to 15-Jan  Cloudy
4: 16-Jan to 20-Jan   Sunny

【讨论】:

  • 我想再添加 2-3 列,其中 1 表示日期范围内的天数,第 2 列计算该日期范围或温度内的平均降雨量,我应该怎么做使用 rleid() ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-10
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多