从给定的数据帧中,我try 获取Cat,monthly_dates,monthly_val,然后计算quarter,quarterly_months,quarterly_values

mont_dates <- c("201401", "201402", "201403", "201404", "201405", 
"201406", "201407", "201408", "201409", "201410", "201411", "201412")
cat <- c("new", "old", "undefined", "new", "old", "undefined", "undefined", "new", "old", "undefined", "new", "old")
mont_vals <- c(221, 433, 878, 455, 998, 797, 77, 3435, 868, 686, 868, 434)
ID <- c(1,2,3,4,5,6,7,8,9,10,11,12)
df <- data.frame(mont_dates, mont_vals, cat, ID)
Monthly_Qrt_vals <- function(df1) {
  df1 %>%
    mutate(mont_dates = ymd(paste0(mont_dates, "01"))) %>%
    pivot_longer(cols = -c(ID, cat, mont_dates),
                 names_to = "monthly_dates",
                 values_to = "monthly_val") %>%
    mutate(quarter = paste0(year(mont_dates), " Q", quarter(mont_dates))) %>%
    arrange(mont_dates) %>%
    group_by(quarter) %>%
    summarise(quarterly_values = sum(monthly_val, na.rm = TRUE),
              quarterly_months = n()) %>%
    ungroup() %>%
    select(monthly_dates, monthly_val, quarter, quarterly_months, quarterly_values)
}

result <- df %>% Monthly_Qrt_vals()
View(result)

在我得到的pivot_longer中,有Error个错误monthly_dates不存在. 我在这段代码中做错了什么?

Error in `select()`:
! Can't subset columns that don't exist.
✖ Column `monthly_dates` doesn't exist.

Expected Outcome

dataframe生成列

Cat monthly_dates monthly_val quarter quarterly_months quarterly_values

推荐答案

您可以通过创建包含mutate的季度摘要来保留每月的日期和值.

library(tidyverse)

Monthly_Qrt_vals <- function(df1) {
  df1 %>%
    mutate(mont_dates = ymd(paste0(mont_dates, "01")),
           quarter = paste0(year(mont_dates), " Q", quarter(mont_dates))) %>%
    arrange(mont_dates) %>%
    mutate(quarterly_values = sum(mont_vals, na.rm = TRUE),
           quarterly_months = n(), .by = quarter) %>%
    select(cat, mont_dates, mont_vals, quarter, quarterly_months, quarterly_values)
}

df %>% Monthly_Qrt_vals()
#>          cat mont_dates mont_vals quarter quarterly_months quarterly_values
#> 1        new 2014-01-01       221 2014 Q1                3             1532
#> 2        old 2014-02-01       433 2014 Q1                3             1532
#> 3  undefined 2014-03-01       878 2014 Q1                3             1532
#> 4        new 2014-04-01       455 2014 Q2                3             2250
#> 5        old 2014-05-01       998 2014 Q2                3             2250
#> 6  undefined 2014-06-01       797 2014 Q2                3             2250
#> 7  undefined 2014-07-01        77 2014 Q3                3             4380
#> 8        new 2014-08-01      3435 2014 Q3                3             4380
#> 9        old 2014-09-01       868 2014 Q3                3             4380
#> 10 undefined 2014-10-01       686 2014 Q4                3             1988
#> 11       new 2014-11-01       868 2014 Q4                3             1988
#> 12       old 2014-12-01       434 2014 Q4                3             1988

R相关问答推荐

跨列应用多个摘要函数:summerise_all:列表对象无法强制为double类型'

在数据表中呈现数学符号

使用sensemakr和fixest feols模型(R)

在特定列上滞后n行,同时扩展框架的长度

变量计算按R中的行更改

是否可以 Select 安装不带文档的R包以更有效地存储?

r中的stat_difference函数不起作用

大规模重新标记haven标签数据

使用R中相同值创建分组观测指标

用预测NLS处理R中生物学假设之上的误差传播

将非重复序列高效转换为长格式

根据元素和前一个值之间的差值过滤矩阵的元素

如何从R ggplot图片中获取SVG字符串?

在保留列表元素属性的同时替换列表元素

函数可以跨多个列搜索多个字符串并创建二进制输出变量

汇总数据的Sheffe检验的P值(平均值和标准差)

R中Gamma回归模型均方误差的两种计算方法不一致

使用geom_sf跨越日期线时的闭合边界

真实世界坐标的逆st_变换

GgHighlight找不到它创建的列:`Highlight..1`->;`Highlight.....`