我有一个带有“ 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)])
答案 0 :(得分:0)
library(dplyr)
df_abb %>%
mutate(state_name = state.name[match(STATE, state.abb)])
您不能像尝试那样使用==
运算符,它想要逐个元素地进行比较,并进行尝试以了解更多信息。如果您的数据带有多余的缩写(例如DC),则此方法将无效。