r - 从年度到月度的爆炸式数据
问题描述
这是一个关于:
我试图将数据集稍微更改为:
date type bps
1 2012-06-28 16:00:00 A 2.44376
2 2012-06-28 16:00:00 B 1.73054
3 2012-06-28 16:00:00 C 1.68171
4 2013-06-27 16:00:00 A 2.07297
5 2013-06-27 16:00:00 B 1.77073
以下是数据集定义:
df = structure(list(date = structure(c(1340892000, 1340892000, 1340892000,
1372341600, 1372341600), class = c("POSIXct", "POSIXt"), tzone = ""), type =
c("A", "B", "C", "A", "B"), bps =
c(2.44376, 1.73054, 1.68171, 2.07297, 1.77073)), .Names = c("date", "type",
"bps"), class = "data.frame", row.names = c(NA, 5L))
问题是以下代码失败:
df_tbl <- as_tibble(df)
df2_tbl <- df_tbl %>% mutate(date = ceiling_date(date, 'month'),
date = map2(date,
lead(date - 1, default = last(date)),
seq, by = 'month')) %>%
unnest() %>%
mutate(date = date - days(1))
出现以下错误:
Error: Problem with `mutate()` input `date`.
x wrong sign in 'by' argument
ℹ Input `date` is `map2(date, lead(date - 1, default = last(date)), seq, by = "month")`.
Run `rlang::last_error()` to see where the error occurred.
似乎原始数据已经包含月度数据,而该数据集是年度数据。
解决方案
如果您查看第一 2 行,它们具有相同的date
内容,因此在相同日期之间创建每月序列是没有意义的。我认为您需要按组应用解决方案,即type
。
library(tidyverse)
library(lubridate)
df_tbl %>%
mutate(date = as.Date(ceiling_date(date, 'month'))) %>%
group_by(type) %>%
mutate(date = map2(date, lead(date - 1, default = last(date)),
seq, by = 'month')) %>%
unnest(date) %>%
mutate(date = date - days(1))
# date type bps
# <date> <chr> <dbl>
# 1 2012-06-29 A 2.44
# 2 2012-07-29 A 2.44
# 3 2012-08-29 A 2.44
# 4 2012-09-29 A 2.44
# 5 2012-10-29 A 2.44
# 6 2012-11-29 A 2.44
# 7 2012-12-29 A 2.44
# 8 2013-01-29 A 2.44
# 9 2013-03-01 A 2.44
#10 2013-03-29 A 2.44
# … with 17 more rows
推荐阅读
- neo4j - Neo4J 不显示选定的边缘
- amazon-web-services - 当多个 DynamoDB 客户端删除特定项目时,每个客户端(如何)确定他们的 DeleteItem 调用是否有意义?
- c# - 在链接到 ID 的 MVC .net 核心中选择组合框
- javascript - 如何删除项目并刷新js中的下拉值列表
- c++ - 在 C++ 中使用 cin 在 int 变量中输入 char 和 int
- spring-webflux - 事务同步:如何使用 Reactor Kafka 和 R2DBC 创建 ChainedKafkaTransactionManager bean
- css - 使用 alpinejs 进行滑块转换
- java - 用于下载多个文件的 Aws S3 预签名 URL
- php - 获取产品图库的图片编号 x 代替原始产品图片
- python - FirefoxWebElement.get_attribute 上的 StaleElementReferenceException 甚至在 WebDriverWait 之后