根据 R 中的可变条件添加行

Cin*_*ina 5 r

我有如下 df

df
ID   type  other-col
1    A1      cc
1    A2      dd
1    A3      cc
2    A1      cc
2    B1      aa
3    A2      aa
Run Code Online (Sandbox Code Playgroud)

我想在“ID”随着“type”和“other-col”列的 F 值变化时添加新内容

new_df
ID
  df
    ID   type  other-col
    1    A1      cc
    1    A2      dd
    1    A3      cc
    1    F       F     <- this row added
    2    A1      cc
    2    B1      aa
    2    F       F      <- this row added
    3    A2      aa
Run Code Online (Sandbox Code Playgroud)

我怎样才能在R中做到这一点?谢谢

akr*_*run 4

group_split带有和 的选项add_row。我们可以通过 'ID' with 分割group_split成一个 data.frames 列表,然后循环 with listmap添加一行作为最后一行(add_row- 默认情况下将行添加到末尾,但我们可以使用 and 控制它.before.after,然后sliceout作为最后一个“ID”的行last不需要“F”行

library(tidyverse)
df1 %>%
   group_split(ID) %>% 
   map_dfr(~ .x %>% 
               add_row(ID = first(.$ID), type = 'F', `other-col` = 'F'))  %>%
   slice(-n())
Run Code Online (Sandbox Code Playgroud)