我有这个数据集:
现在,我想添加行,其中包含每个id的最小值和最大值之间的所有年龄,例如此数据集:
有人可以给我一些提示吗?预先感谢。
答案 0 :(得分:1)
这可以通过CHN_PANNING
data.table
答案 1 :(得分:0)
这里是tidyverse
的一个选项。我们在map2
中用transmute
得到'min_age','max_age'的序列,然后在unnest
列中list
得到预期的输出
library(tidyverse)
DF %>%
transmute(id = id, age = map2(min_age, max_age, `:`)) %>%
unnest
# id age
#1 1 60
#2 1 61
#3 1 62
#4 1 63
#5 1 64
#6 1 65
#7 2 55
#8 2 56
#9 2 57
#10 3 72
#11 4 67
#12 4 68
#13 4 69
#14 5 58
#15 5 59
#16 5 60
#17 5 61
或将base R
与Map
一起使用
stack(setNames(do.call(Map, c(f = `:`, DF[-1])), DF$id))[2:1]
DF <- structure(list(id = 1:5, min_age = c(60, 55, 72, 67, 58), max_age = c(65,
57, 72, 69, 61)), class = "data.frame", row.names = c(NA, -5L
))