【发布时间】:2019-07-12 04:54:24
【问题描述】:
我有一个问题,我的data.frame 由于数据源不同而包含不同的属性。例如,state 列实际上具有相同的状态,但表示形式不同。请注意,我的实际数据未使用美国各州。
df <- data.frame(Names=c("Adam", "Mark", "Dahlia", "Jeff", "Derek",
"Arnold", "Sheppard", "Dwayne", "Nichols", "Shane"),
Age=c(27, 28, 29, 37, 26, 22, 29, 34, 31, 30),
States=c("AL", "Alaska", "Alabama", "WI",
"Wisconsin", "AZ", "Arizona", "AL", "WI", "AK"))
我正在尝试将 AL、WI、AZ 和 AK 等值分别重新编码为 Alabama、Wisconsin、Arizona 和 Alaska。
到目前为止,我遇到了:
case_when(
df$States == "AL" ~ "Alabama",
df$States == "AK" ~ "Alaska",
df$States == "WI" ~ "Wisconsin",
df$States == "AZ" ~ "Arizona",
)
它给了我输出:
[1] "Alabama" NA NA "Wisconsin" NA "Arizona" NA
[8] "Alabama" "Wisconsin" "Alaska"
我不想要 NA 值所以我所做的是:
case_when(
df$States == "AL" ~ "Alabama",
df$States == "Alabama" ~ "Alabama",
df$States == "AK" ~ "Alaska",
df$States == "Alaska" ~ "Alaska",
df$States == "WI" ~ "Wisconsin",
df$States == "Wisconsin" ~ "Wisconsin",
df$States == "AZ" ~ "Arizona",
df$States == "Arizona" ~ "Arizona",
)
它给了我想要的输出,但我认为有更简单的方法可以做到这一点。
我正在考虑循环,因为稍后我想把它变成伪代码。但是,我对如何执行此操作没有任何想法。非常感谢大家在这里提供帮助。
谢谢。
【问题讨论】: