中文 · PDF 193
我们可以通过两次 separate() 调用来拆分每个编码中的值。第一次拆分会在每个下划线处分割编码:
who3 <- who2 %>% separate(key, c("new", "type", "sexage"), sep = "_") who3 #> # A tibble: 76,046 × 8 #> country iso2 iso3 year new type sexage cases #> * #> 1 Afghanistan AF AFG 1997 new sp m014 0 #> 2 Afghanistan AF AFG 1998 new sp m014 30 #> 3 Afghanistan AF AFG 1999 new sp m014 8 #> 4 Afghanistan AF AFG 2000 new sp m014 52 #> 5 Afghanistan AF AFG 2001 new sp m014 129 #> 6 Afghanistan AF AFG 2002 new sp m014 90 #> # ... 还有 7.604e+04 行
然后我们不妨直接丢弃 new 列,因为它在这个数据集中是常量。既然要删除列,我们也顺便删除冗余的 iso2 和 iso3:
who3 %>% count(new) #> # A tibble: 1 × 2 #> new n #> #> 1 new 76046 who4 <- who3 %>% select(-new, -iso2, -iso3)
接下来,我们通过在第一个字符之后分割,将 sexage 拆分为 sex 和 age:
who5 <- who4 %>% separate(sexage, c("sex", "age"), sep = 1) who5 #> # A tibble: 76,046 × 6 #> country year type sex age cases #> * #> 1 Afghanistan 1997 sp m 014 0 #> 2 Afghanistan 1998 sp m 014 30 #> 3 Afghanistan 1999 sp m 014 8 #> 4 Afghanistan 2000 sp m 014 52 #> 5 Afghanistan 2001 sp m 014 129 #> 6 Afghanistan 2002 sp m 014 90 #> # ... 还有 7.604e+04 行
现在 who 数据集已经是整洁格式了!