如何使用purrr匹配查找表中的记录? [英] How can I use purrr to match records from a lookup table?
本文介绍了如何使用purrr匹配查找表中的记录?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个数据集
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
中的值转换为完整状态名称
And I am trying to use purrr
to convert the values in Q1
and Q2
into full state names using a lookup table
lktState <- data_frame(abb=state.abb, name=state.name)
到目前为止,我已经尝试过了,但是没有用
So far I've tried this but it doesn't work
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)]))
match(.x,lktState $ abb)中的错误:未找到对象'.x'
Error in match(.x, lktState$abb) : object '.x' not found
推荐答案
基本R版本(可以矢量化,但可以说明这个概念):
base R version (which can be vectorized but this illustrates the concept):
xdf <- data.frame(
Q1= c('AL', NA, 'TX', 'FL'),
Q2 = c('MN', 'CO', NA, NA),
value = c(10, 24, 12, 54),
stringsAsFactors=FALSE
) -> xdf
xdf
## Q1 Q2 value
## 1 AL MN 10
## 2 <NA> CO 24
## 3 TX <NA> 12
## 4 FL <NA> 54
lktState <- setNames(state.name, state.abb)
xdf$Q1 <- lktState[xdf$Q1]
xdf$Q2 <- lktState[xdf$Q2]
xdf
## Q1 Q2 value
## 1 Alabama Minnesota 10
## 2 <NA> Colorado 24
## 3 Texas <NA> 12
## 4 Florida <NA> 54
"tidyverse"
"tidyverse"
library(dplyr)
xdf <- data_frame(
Q1= c('AL', NA, 'TX', 'FL'),
Q2 = c('MN', 'CO', NA, NA),
value = c(10, 24, 12, 54)
) -> xdf
xdf
## # 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
lktState <- setNames(state.name, state.abb)
mutate_at(xdf, .vars=vars(-value), .funs=funs(lktState[.]))
## # A tibble: 4 x 3
## Q1 Q2 value
## <chr> <chr> <dbl>
## 1 Alabama Minnesota 10
## 2 <NA> Colorado 24
## 3 Texas <NA> 12
## 4 Florida <NA> 54
无需使用类似于应用"的习惯用法即可完成此基本查找表分配.
There's no need to use "apply"-like idioms to do this basic lookup table assignment.
这篇关于如何使用purrr匹配查找表中的记录?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文