根据相关标签更改列中的值

时间:2017-09-07 20:28:10

标签: r dplyr

我需要根据第1列中的关联值更改最后一列中的数据值。例如,如果state是" AK"那么comm_rank应该是" 1",如果state是" AL"那么comm_rank应该是" 2",如果state是" AR"那么comm_rank应该是" 3"等等。

任何人都可以建议我循环浏览最后一列然后相应更改其值的有效方法吗?我的原始数据框比这个样本大得多,所以我需要有效地做到这一点。

示例数据框:

screenshot

3 个答案:

答案 0 :(得分:3)

自您标记为dplyr

library(dplyr)
mutate(INPUT, comm_rank = case_when(state == "AK" ~ 1,
                                    state == "AL" ~ 2,
                                    state == "AR" ~ 3))

答案 1 :(得分:1)

使用基数R你可以这样做:

  df[ncol(df)] <- as.numeric(as.factor(df[,"state"]))

答案 2 :(得分:1)

可重现的数据

set.seed(1)
df <- data.frame(state = sample(c("AK", "AL", "AR"), 10, replace=TRUE),

dplyr解决方案

v <- 1:3
names(v) <- c("AK", "AL", "AR")
v
# AK AL AR 
# 1  2  3

library(dplyr)
df %>% mutate(comm_rank = v[state])

基础R解决方案

df$comm_rank <- v[df$state]