我有如下 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中做到这一点?谢谢
group_split带有和 的选项add_row。我们可以通过 'ID' with 分割group_split成一个 data.frames 列表,然后循环 with list,map添加一行作为最后一行(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)