数据如下:
quarter name week value
17Q3 abc 1 0.7
17Q3 abc 3 0.65
17Q3 def 1 0.13
17Q3 def 2 0.04
我可以插入值为0的行,其中缺少一周的值,即输出应该是:
quarter name week value
17Q3 abc 1 0.7
17Q3 abc 3 0.65
17Q3 abc 2 0.0
17Q3 def 1 0.13
17Q3 def 2 0.04
17Q3 def 3 0.0
需要填写到第13周.(即检查到13)
最佳答案 如何通过使用扩展完成.
library(tidyverse)
complete(df, expand(df, quarter, name, week), fill = list(value=0))
# quarter name week value
# <fct> <fct> <int> <dbl>
# 1 17Q3 abc 1 0.700
# 2 17Q3 abc 2 0
# 3 17Q3 abc 3 0.650
# 4 17Q3 def 1 0.130
# 5 17Q3 def 2 0.0400
# 6 17Q3 def 3 0
或者,也许更容易理解:
df %>% expand(quarter, name, week) %>% left_join(df) %>% replace_na(list(value=0))