df <- data.frame(date = as.Date(c(rep("2022-01-01", 3), 
                                  rep("2022-02-01", 3),
                                  rep("2022-03-01", 4))),
                 flavor = c("Almond", "Apple", "Apricot", 
                            "Almond", "Maple", "Mint",
                            "Apricot", "Pecan", "Praline", "Pumpkin"))
#>          date  flavor
#> 1  2022-01-01  Almond
#> 2  2022-01-01   Apple
#> 3  2022-01-01 Apricot
#> 4  2022-02-01  Almond
#> 5  2022-02-01   Maple
#> 6  2022-02-01    Mint
#> 7  2022-03-01 Apricot
#> 8  2022-03-01   Pecan
#> 9  2022-03-01 Praline
#> 10 2022-03-01 Pumpkin

上面的R数据框逐月追踪冰淇淋店的冰淇淋口味.在2月份,添加了两种在1月份不存在的口味(枫树、 mint ),并删除了在1月份存在的两种口味(苹果、杏).在3月份,添加了四种在2月份不存在的口味(杏、山核桃、果仁、南瓜),并删除了在2月份存在的三种口味(杏仁、枫树、 mint ).

#>          date  flavors.added  flavors.removed
#> 1  2022-01-01           <NA>             <NA>
#> 2  2022-02-01              2                2
#> 3  2022-03-01              4                3

如何编写R脚本来计算上面的摘要数据帧?也就是说,我想要一个每月添加的、上个月不存在的冰淇淋口味的滚动计数,以及一个月移除的、上个月存在的口味的计数.

推荐答案

dplyr年:

library(dplyr)
df %>% 
  group_by(date) %>% 
  summarise(flavors = list(flavor)) %>% 
  mutate(flavors.added = lengths(mapply(setdiff, flavors, lag(flavors))),
         flavors.removed = lengths(mapply(setdiff, lag(flavors), flavors)))

输出

# A tibble: 3 × 4
  date       flavors   flavors.added flavors.removed
  <date>     <list>            <int>           <int>
1 2022-01-01 <chr [3]>             3               0
2 2022-02-01 <chr [3]>             2               2
3 2022-03-01 <chr [4]>             4               3

R相关问答推荐

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

根据R中两个变量的两个条件删除带有dspirr的行

pickerInput用于显示一条或多条geom_hline,这些线在图中具有不同 colored颜色

有没有一个R函数允许你从一个数字变量中提取一个数字,而不考虑它的位置(不仅仅是第一个或最后一个数字?

使用case_match()和char数组重新编码值

如何在R中对深度嵌套的tibbles中的非空连续行求和?

更改STAT_VALLES/STAT_PEAKS中的箭头线宽/大小

跨列查找多个时间报告

R -如何分配夜间GPS数据(即跨越午夜的数据)相同的开始日期?

从数据创建数字的命名列表.R中的框

将数据集旋转到长格式,用于遵循特定名称模式的所有变量对

有没有办法将基于每个值中出现的两个关键字或短语的字符串向量重新编码为具有这两个值的新向量?

随机将数据帧中特定列上的某些行设置为NA

按组使用dummy r获取高于标准的行的平均值

如果满足条件,则替换列的前一个值和后续值

如何将字符类对象中的数据转换为R中的字符串

Package emMeans:如果emmip模型中包含的变量较少,emMeans模型中的其他变量设置为什么?

从data.table列表中提取特定组值,并在R中作为向量返回

如何将数据框压缩为更宽,同时将行输入保持为行输入,而不是R中的列名?

根据小时-分钟列创建年-月-日序列