在R数据帧中填充多列
我有一个叫做流感的数据框,它是每周按组统计的病例数(n)在R数据帧中填充多列,r,dplyr,R,Dplyr,我有一个叫做流感的数据框,它是每周按组统计的病例数(n) flu <- structure(list(isoweek = c(1, 1, 2, 2, 3, 3, 4, 5, 5), group = c("fluA", "fluB", "fluA", "fluB", "fluA", "fluB", "fluA", "fluA", "fluB" ), n = c(5, 6, 3, 5, 12, 14, 6, 23, 25)), class = c("spec_tbl_df", "tbl_d
flu <- structure(list(isoweek = c(1, 1, 2, 2, 3, 3, 4, 5, 5), group = c("fluA",
"fluB", "fluA", "fluB", "fluA", "fluB", "fluA", "fluA", "fluB"
), n = c(5, 6, 3, 5, 12, 14, 6, 23, 25)), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -9L), spec = structure(list(
cols = list(isoweek = structure(list(), class = c("collector_double",
"collector")), group = structure(list(), class = c("collector_character",
"collector")), n = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1), class = "col_spec"))
我的问题是,这只适用于报告数周的数据。例如,在第6、7、8周等,如果没有病例报告,我没有数据
如何扩展此填充过程,以将数据帧扩展为0(例如,从isoweeks 6到10),并使每周对应的fluA和fluB为0(每个isoweeks/组对)?您可以在
complete
中展开多列。假设您在第8周之前需要数据,您可以:
tidyr::complete(flu, isoweek = 1:8, group, fill = list(n = 0))
# A tibble: 16 x 3
# isoweek group n
# <dbl> <chr> <dbl>
# 1 1 fluA 5
# 2 1 fluB 6
# 3 2 fluA 3
# 4 2 fluB 5
# 5 3 fluA 12
# 6 3 fluB 14
# 7 4 fluA 6
# 8 4 fluB 0
# 9 5 fluA 23
#10 5 fluB 25
#11 6 fluA 0
#12 6 fluB 0
#13 7 fluA 0
#14 7 fluB 0
#15 8 fluA 0
#16 8 fluB 0
tidyr::完成(流感,isoweek=1:8,分组,填充=列表(n=0))
#一个tibble:16 x 3
#等周群
#
#1 fluA 5
#2 1 fluB 6
#3 2 fluA 3
#4 2 fluB 5
#5 3 fluA 12
#6 3 fluB 14
#7 4 fluA 6
#8 4 fluB 0
#9 5 fluA 23
#10 5 fluB 25
#11 6 fluA 0
#12 6 fluB 0
#13 7 fluA 0
#14 7 fluB 0
#15 8 fluA 0
#16 8 fluB 0
tidyr::complete(flu, isoweek = 1:8, group, fill = list(n = 0))
# A tibble: 16 x 3
# isoweek group n
# <dbl> <chr> <dbl>
# 1 1 fluA 5
# 2 1 fluB 6
# 3 2 fluA 3
# 4 2 fluB 5
# 5 3 fluA 12
# 6 3 fluB 14
# 7 4 fluA 6
# 8 4 fluB 0
# 9 5 fluA 23
#10 5 fluB 25
#11 6 fluA 0
#12 6 fluB 0
#13 7 fluA 0
#14 7 fluB 0
#15 8 fluA 0
#16 8 fluB 0