R 根据列的关联标签更改列中的值

R 根据列的关联标签更改列中的值,r,dplyr,R,Dplyr,我需要根据第一列中的关联值更改最后一列中数据的值。例如,如果状态为“AK”,则通信等级应为“1”;如果状态为“AL”,则通信等级应为“2”;如果状态为“AR”,则通信等级应为“3”,等等 任何人都可以建议我一种有效的方法来循环最后一列,然后相应地更改它们的值吗?我的原始数据帧比这个示例大得多,所以我需要高效地执行此操作 示例数据帧: 自从您用dplyr library(dplyr) mutate(INPUT, comm_rank = case_when(state == "AK" ~ 1,

我需要根据第一列中的关联值更改最后一列中数据的值。例如,如果
状态
为“AK”,则
通信等级
应为“1”;如果
状态
为“AL”,则
通信等级
应为“2”;如果
状态
为“AR”,则
通信等级
应为“3”,等等

任何人都可以建议我一种有效的方法来循环最后一列,然后相应地更改它们的值吗?我的原始数据帧比这个示例大得多,所以我需要高效地执行此操作

示例数据帧:


自从您用
dplyr

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

使用base R,您可以执行以下操作:

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

df[ncol(df)]

set.seed(1)
df <- data.frame(state = sample(c("AK", "AL", "AR"), 10, replace=TRUE),
基本R解决方案

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

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

df$comm\u秩如果秩是基于
state
的字母顺序,那么
as.numeric(factor(dat$state))
怎么样?你也可以试试,猜猜看,
rank