今天早些时候,我发布了这个问题here,但我还有一个问题已经提出.

如果我必须在原始数据框中添加更多变量(loc,height):

var = c(rep("A",3),rep("B",2),rep("C",5));var
date = c(as.Date("2022/01/01"),as.Date("2022/02/01"),as.Date("2022/03/01"),
         as.Date("2022/01/01"),as.Date("2022/03/01"),
         as.Date("2022/01/01"),as.Date("2022/01/01"),as.Date("2022/02/01"),as.Date("2022/02/01"),as.Date("2022/03/01"))
loc = c(rep("london",3),rep("berlin",2),rep("cairo",5))
height =c(13,14,15,13,15,16,12,14,13,15)
data = tibble(var,date,loc,height);data

如何保持loc变量的相应值和每个月的身高总和(除了前面回答的问题之外)?

理想情况下,它现在必须如下所示:

var Quarter Month Condition loc height
A 1 1 TRUE London 13
A 1 2 TRUE London 14
A 1 3 TRUE London 15
B 1 1 TRUE berlin 13
B 1 2 FALSE berlin 0
B 1 3 TRUE berlin 15
C 1 1 TRUE cairo 28
C 1 2 TRUE cairo 27
C 1 3 TRUE cairo 15

有什么帮助吗?我如何使用dplyr在R中实现它?

推荐答案

从之前的溶液中,在distinct中添加.keep_all = TRUE,然后在loc柱中添加fill,使用之前的非NA值

library(dplyr)
library(tidyr)
library(lubridate)
data %>%   
   mutate(month = lubridate::month(date)) %>%
   group_by(var, month) %>% 
   mutate(height = sum(height)) %>%
   ungroup %>% 
   complete(var, month, fill = list(height = 0)) %>% 
   mutate(Quarter = quarter, Condition = !is.na(date)) %>% 
   distinct(var, month, Quarter, Condition, .keep_all = TRUE) %>% 
   fill(loc) %>% 
   select(-date)

-输出

# A tibble: 9 × 6
  var   month loc    height Quarter Condition
  <chr> <dbl> <chr>   <dbl>   <dbl> <lgl>    
1 A         1 london     13       1 TRUE     
2 A         2 london     14       1 TRUE     
3 A         3 london     15       1 TRUE     
4 B         1 berlin     13       1 TRUE     
5 B         2 berlin      0       1 FALSE    
6 B         3 berlin     15       1 TRUE     
7 C         1 cairo      28       1 TRUE     
8 C         2 cairo      27       1 TRUE     
9 C         3 cairo      15       1 TRUE     

R相关问答推荐

按R中不同长度的组将日期时间列值四舍五入到小时

R包terra在投影时如何决定模板格栅属性?

使用gsim删除特殊词

如何使用ggplot重新绘制LASO回归图?

如何判断某列中由某些行组成的百分比

如果索引重复,聚合xts核心数据

x[[1]]中的错误:脚注越界

获取一个数据库框架的摘要,该数据库框架将包含一列数据库框架,

如何将dygraph调用到R Markdown作为一个shiny 的react 对象的参数?

derrr mutate case_when grepl不能在R中正确返回值

使用ggsankey调整Sankey图中单个 node 上的标签

使用整齐的计算(curl -curl )和杂音

传递ggplot2的变量作为函数参数—没有映射级别以正确填充美学

如何识别倒排的行并在R中删除它们?

将全局环境变量的名称分配给列表中的所有元素

警告消息";没有非缺失的参数到min;,正在返回数据中的inf";.表分组集

按组内中位数分类

如何删除设置大小的曲线图并添加条形图顶部数字的百分比

错误包arrowR:READ_PARQUET/OPEN_DATASET&QOT;无法反序列化SARIFT:TProtocolException:超出大小限制&Quot;

生存时间序列的逻辑检验