【发布时间】:2019-03-12 08:30:18
【问题描述】:
我有以下df:
df <- tibble(country = c("US", "US", "US", "US", "US", "US", "US", "US", "US", "Mex", "Mex"),
year = c(1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2000, 2001),
score = c(NA, NA, NA, NA, 426, NA, NA, 430, NA, 450, NA))
我想做的:创建一个新变量years_from_implementation,即0一个国家/地区的第一年有score的非NA值,代表年数从 0 表示所有其他值。
换句话说,硬编码,我希望它返回以下df:
df <- tibble(country = c("US", "US", "US", "US", "US", "US", "US", "US", "US", "Mex", "Mex"),
year = c(1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2000, 2001),
score = c(NA, NA, NA, NA, 426, NA, NA, 430, NA, 450, NA),
years_from_implementation = c(-4,-3,-2,-1,0,1,2,3,4,0,1))
这一切都是在按country分组时完成的。
我尝试将df <- mutate(df, before_after = case_when(!is.na(score) ~ 0)) 与fill 命令结合起来,但没有任何动作。
Tidyverse 解决方案将是首选,但我们将非常感谢任何帮助。
提前致谢!
【问题讨论】:
标签: r conditional-statements tidyr dplyr