我有一个类似下面的数据集,除了有数千行数据,分别对应于几个年龄组、时间段和州:
state time_period gender agegroup cases
AL 1/1/2020-1/15/2020 F 10-19 2
AL 1/16/2020-1/30/2020 F 10-19 4
AL 1/31/2020-2/14/2020 F 10-19 5
AL 1/1/2020-1/15/2020 M 10-19 4
AL 1/16/2020-1/30/2020 M 10-19 17
AL 1/31/2020-2/14/2020 M 10-19 29
AK 1/1/2020-1/15/2020 M 20-29 50
AK 1/16/2020-1/30/2020 M 20-29 11
AK 1/31/2020-2/14/2020 M 20-29 29
AK 1/1/2020-1/15/2020 F 20-29 50
AK 1/16/2020-1/30/2020 F 20-29 11
AK 1/31/2020-2/14/2020 F 20-29 29我希望根据cases列中的数字有条件地添加新行,然后一起删除cases列。因此,如果cases列的==为2,那么我希望州、时间段、性别和年龄组重复两次。
因此,以前三行为例,我希望新数据框如下所示:
state time_period gender agegroup
AL 1/1/2020-1/15/2020 F 10-19
AL 1/1/2020-1/15/2020 F 10-19
AL 1/16/2020-1/30/2020 F 10-19
AL 1/16/2020-1/30/2020 F 10-19
AL 1/16/2020-1/30/2020 F 10-19
AL 1/16/2020-1/30/2020 F 10-19
AL 1/31/2020-2/14/2020 F 10-19
AL 1/31/2020-2/14/2020 F 10-19
AL 1/31/2020-2/14/2020 F 10-19
AL 1/31/2020-2/14/2020 F 10-19
AL 1/31/2020-2/14/2020 F 10-19 我将如何实现这一点?
发布于 2021-04-15 02:46:49
out <- dat[rep(seq_along(dat$cases), dat$cases),-5]
head(out,20)
# state time_period gender agegroup
# 1 AL 1/1/2020-1/15/2020 F 10-19
# 1.1 AL 1/1/2020-1/15/2020 F 10-19
# 2 AL 1/16/2020-1/30/2020 F 10-19
# 2.1 AL 1/16/2020-1/30/2020 F 10-19
# 2.2 AL 1/16/2020-1/30/2020 F 10-19
# 2.3 AL 1/16/2020-1/30/2020 F 10-19
# 3 AL 1/31/2020-2/14/2020 F 10-19
# 3.1 AL 1/31/2020-2/14/2020 F 10-19
# 3.2 AL 1/31/2020-2/14/2020 F 10-19
# 3.3 AL 1/31/2020-2/14/2020 F 10-19
# 3.4 AL 1/31/2020-2/14/2020 F 10-19
# 4 AL 1/1/2020-1/15/2020 M 10-19
# 4.1 AL 1/1/2020-1/15/2020 M 10-19
# 4.2 AL 1/1/2020-1/15/2020 M 10-19
# 4.3 AL 1/1/2020-1/15/2020 M 10-19
# 5 AL 1/16/2020-1/30/2020 M 10-19
# 5.1 AL 1/16/2020-1/30/2020 M 10-19
# 5.2 AL 1/16/2020-1/30/2020 M 10-19
# 5.3 AL 1/16/2020-1/30/2020 M 10-19
# 5.4 AL 1/16/2020-1/30/2020 M 10-19行名是无害的(可以重置为简单的数字),但它们确实表明(除了实际数据之外)前两行来自第1行,接下来的四行来自第2行,依此类推(我不会依赖于此,我只是突出显示了一个强化声明的工件。
最终的行数与预期一致:
sum(dat$cases)
# [1] 241
nrow(out)
# [1] 241https://stackoverflow.com/questions/67097322
复制相似问题