【发布时间】:2017-07-15 10:34:07
【问题描述】:
我有这个数据集
library(dplyr)
data_frame(Q1= c('AL', NA, 'TX', 'FL'), Q2=c('MN', 'CO', NA, NA), value=c(10,24,12,54))
# A tibble: 4 x 3
Q1 Q2 value
<chr> <chr> <dbl>
1 AL MN 10
2 <NA> CO 24
3 TX <NA> 12
4 FL <NA> 54
我正在尝试使用purrr 使用查找表将Q1 和Q2 中的值转换为完整的状态名称
lktState <- data_frame(abb=state.abb, name=state.name)
到目前为止,我已经尝试过,但它不起作用
data_frame(Q1= c('AL', NA, 'TX', 'FL'), Q2=c('MN', 'CO', NA, NA), value=c(10,24,12,54)) %>%
mutate_at(vars('Q1','Q2'), purrr::map(.x = ., lktState$name[match(.x, lktState$abb)]))
匹配错误(.x,lktState$abb):找不到对象“.x”
【问题讨论】:
-
这是一种方法,
df %>% gather(var, abb, -value) %>% left_join(lktState) %>% select(-abb) %>% spread(var, name) -
@sotos 注意这需要
tidyr包。