如何使用mutate根据现有列中的状态缩写添加带有状态名称的列?

时间:2018-12-05 19:41:36

标签: r dplyr

我有一个带有“ STATE”列的数据框,该列仅包含美国州的缩写,我想根据该行中的缩写添加一个新的带有州名称的列。似乎应该有一种使用dplyr :: mutate和state.name和state.abb的优雅方法。可以很好地返回状态名称:

state.name[which(state.abb == "NY")]

但是我该如何在mutate中使用它?数据框示例:

df_abb <- data.frame(x = 1:5, STATE = c("AK", "AK", "AL", "AR", "CA"))

我使用mutate的尝试无效,

df_abb_w_name <- df_abb %>%
    mutate(STATE_NAME = state.name[which(state.abb == STATE)])

1 个答案:

答案 0 :(得分:0)

library(dplyr)
df_abb %>% 
  mutate(state_name = state.name[match(STATE, state.abb)])

您不能像尝试那样使用==运算符,它想要逐个元素地进行比较,并进行尝试以了解更多信息。如果您的数据带有多余的缩写(例如DC),则此方法将无效。