我有一个例子DF:

df <- structure(list(A = c('A', 'B', 'C', 'D', 'E', 'F'), 
                     B = c(2, 5, 8, 12, 15, 18)), class = "data.frame", row.names = c(NA, -6L))

  A  B
1 A  2
2 B  5
3 C  8
4 D 12
5 E 15
6 F 18

我想在像这样的组中添加值为B的行和值为B的行:

   A         B
 1 A         1
 2 A         2
 3 A         3
 4 B         4
 5 B         5
 6 B         6
 7 C         7
 8 C         8
 9 C         9
10 D        11
11 D        12
12 D        13
13 E        14
14 E        15
15 E        16
16 F        17
17 F        18
18 F        19

所以我做了这样的事情,它就成功了:

df %>%
  group_by(A) %>%
  complete(B = B + c(-1,1)) %>%
  arrange(B)

但我的真实数据...假设重复组:

df <- structure(list(A = c('A', 'A', 'C', 'D', 'E', 'F'), 
                     B = c(2, 5, 8, 12, 15, 18)), class = "data.frame", row.names = c(NA, -6L))
  A  B
1 A  2
2 A  5
3 C  8
4 D 12
5 E 15
6 F 18

我仍然想给组中的每个元素加上1和-1,保留原来的元素并保持组中的顺序:

A         B
1 A         1
2 A         2
3 A         3
4 A         4
5 A         5
6 A         6
7 C         7
8 C         8
9 C         9
10 D        11
11 D        12
12 D        13
13 E        14
14 E        15
15 E        16
16 F        17
17 F        18
18 F        19

我的解决方案不工作没有更多的给予:

   A         B
 1 A         1
 2 A         2
 3 A         5
 4 A         6
 5 C         7
 6 C         8
(...)

你能告诉我如何修改我的dplyr码吗?

推荐答案

你可以使用unnest个像下面这样

df %>%
    mutate(B = list(B + (-1:1)), .by = A) %>%
    unnest(B)

这给了我们

# A tibble: 18 × 2
   A         B
   <chr> <dbl>
 1 A         1
 2 A         2
 3 A         3
 4 B         4
 5 B         5
 6 B         6
 7 C         7
 8 C         8
 9 C         9
10 D        11
11 D        12
12 D        13
13 E        14
14 E        15
15 E        16
16 F        17
17 F        18
18 F        19

R相关问答推荐

格点中指数、双曲和反双曲模型曲线的正确绘制

如何在R中添加截止点到ROC曲线图?

当两个图层映射到相同的美学时,隐藏一个图层的图例值

如果第一个列表中的元素等于第二个列表的元素,则替换为第三个列表的元素

如何从像glm这样的模型中提取系数表的相关性?

plotly hover文本/工具提示在shiny 中不起作用

R中边际效应包中Logistic回归的交互作用风险比

R中1到n_1,2到n_2,…,n到n_n的所有组合都是列表中的向量?

使用Scale_*_MANUAL时在图例中保留未使用的系数级别

如何在科学记数法中显示因子

`夹心::vcovCL`不等于`AER::tobit`标准错误

更新R中的数据表(使用data.table)

如何根据R中其他变量的类别汇总值?

如何使用同比折线图中的个别日

创建列并对大型数据集中的特定条件进行成对比较的更高效程序

在同一单元格中创建包含整数和百分比的交叉表

我已经运行了几个月的代码的`Palette()`中出现了新的gglot错误

如何用不同长度的向量填充列表?

重写时间间隔模糊连接以减少内存消耗

使用另一列中的增长率外推R(使用dplyr)