You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:复制tibble行同时递增指定列的实现问题

问题解答

你的当前思路不正确,因为uncount()函数仅能根据freq值重复现有行,只会复制原有的day数值,无法生成新的连续天数序列,最终day列会是原最大天数的重复值,而非你需要的目标天数。

要实现需求,正确思路是按食物类型分组后,直接生成包含原有天数和补充天数的完整序列,具体代码如下:

library(dplyr)
library(tibble)

# 原始数据集
original_tbl <- tibble(food = c(rep("sunflower",3), rep("suet",3)), day = c(1:3, c(1,2,5)))

# 生成目标数据集
original_tbl %>%
  group_by(food) %>%
  group_modify(~ tibble(day = c(.x$day, seq(max(.x$day) + 1, 8)))) %>%
  ungroup()

执行后得到的结果符合需求:

# A tibble: 14 × 2
   food        day
   <chr>     <int>
 1 sunflower     1
 2 sunflower     2
 3 sunflower     3
 4 sunflower     4
 5 sunflower     5
 6 sunflower     6
 7 sunflower     7
 8 sunflower     8
 9 suet          1
10 suet          2
11 suet          5
12 suet          6
13 suet          7
14 suet          8

如果你习惯用summarize结合unnest的写法,也可以这样实现:

library(tidyr)

original_tbl %>%
  group_by(food) %>%
  summarize(day = list(c(day, seq(max(day) + 1, 8)))) %>%
  unnest(day)

内容的提问来源于stack exchange,提问作者David Robie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:06:29