R 基于另一列的值更改一列的值
我想知道是否可以根据列状态的值更改列CVE的值 我有50种不同的状态,我想根据列状态的值在列CVE中设置一个值 范例R 基于另一列的值更改一列的值,r,dplyr,data.table,R,Dplyr,Data.table,我想知道是否可以根据列状态的值更改列CVE的值 我有50种不同的状态,我想根据列状态的值在列CVE中设置一个值 范例 year state CVE 1980 TX 3 1986 PEN 3 1987 CAL 3 2000 TX 3 我希望如果state==“TX”,那么将列CVE的值更改为“45”,并对其他状态使用相同的逻辑 我试过这个: setDT(df)[state == "TX" , CV
year state CVE
1980 TX 3
1986 PEN 3
1987 CAL 3
2000 TX 3
我希望如果state==“TX”,那么将列CVE的值更改为“45”,并对其他状态使用相同的逻辑
我试过这个:
setDT(df)[state == "TX" , CVE:="45" ]
setDT(df)[state == "CAL" , CVE:="50" ]
setDT(df)[state == "PEN" , CVE:="56" ]
但我不知道如何为不同的状态编写单个命令并设置CVE。
我想知道是否有一种方法可以做到这一点,避免将同一命令重复50次使用key/val数据集和连接会更容易,因为它可以快速高效地执行
library(data.table)
keydat <- data.table(state = c("TX", "CAL", "PEN"), CVE_GEO = c("45", "50", "56"))
setDT(df)[keydat, CVE := i.CVE_GEO, on = .(state)]
注意:这里我们假设原始数据集中的CVE
列与“keydat”“CVE_GEO”的类型相同,即字符
类
数据
df似乎只需要一个命名向量。您可以将其用作查找。以下是一个例子:
# Create sample data
df <- read.table(header = TRUE, text = '
year state CVE
1980 TX 3
1986 PEN 3
1987 CAL 3
2000 TX 3
')
# Create lookup named vector
vct <- c(TX = 45, PEN = 54, CAL = 29)
# Apply vector to CVE column
df$CVE <- vct[df$state]
# View results
df
# year state CVE
# 1 1980 TX 45
# 2 1986 PEN 54
# 3 1987 CAL 29
# 4 2000 TX 45
#创建示例数据
df
df <- structure(list(year = c(1980L, 1986L, 1987L, 2000L), state = c("TX",
"PEN", "CAL", "TX"), CVE = c("3", "3", "3", "3")), row.names = c(NA,
-4L), class = "data.frame")
# Create sample data
df <- read.table(header = TRUE, text = '
year state CVE
1980 TX 3
1986 PEN 3
1987 CAL 3
2000 TX 3
')
# Create lookup named vector
vct <- c(TX = 45, PEN = 54, CAL = 29)
# Apply vector to CVE column
df$CVE <- vct[df$state]
# View results
df
# year state CVE
# 1 1980 TX 45
# 2 1986 PEN 54
# 3 1987 CAL 29
# 4 2000 TX 45