【发布时间】:2021-03-08 07:23:14
【问题描述】:
我正在尝试复制数据集中的一行并保留不需要复制的行。
这里是示例数据:
library(tidyverse)
df <- data.frame(id = c('2292','2293','2294'), var1 = c('a', 'b', 'c'),
freq = c(1, NA, NA))
之前:
id var1 freq
1 2292 a 1
2 2293 b 0
3 2294 c 0
之后:
id var1 freq
1 2292 a 1
2 2292.1 a 1
3 2293 b 0
4 2294 c 0
我查看了以下问题:
Repeat each row of data.frame the number of times specified in a column
但是在以下示例中:
df %>% uncount(freq, .remove = FALSE)
我明白了:
id var1 freq
1 2292 a 1
通过id 选择然后复制选定的id 将非常有帮助,同时保留不需要复制且我希望保留的行。
我也试过了:
df %>% map_df(., rep, .$freq)
这就接近了:
df %>%
filter(row_number() %in% c(1)) %>%
rbind.fill(df) %>%
arrange(id)
结果:
id var1 freq
1 2292 a 1
2 2292 a 1
3 2293 b 0
4 2294 c 0
但理想情况下,我想通过id 而不是row_number 选择行,然后更新id 使其变为2992.1。之后我可以删除freq 列。我正在使用tidyverse。
【问题讨论】:
标签: r duplicates tidyverse expand rbind