如何根据州级数据框中的值在个人级数据框中创建新变量?

问题描述

我正在尝试在基于另一个 DF 中包含的数据的数据框 (DF) 中创建一个新变量,其中 DF 1 是个人级数据,DF 2 是州级数据。为了说明,这里是 DF 1 的快照:

(DF1 <- data.frame("id"=1:5,"s1"=c("MA","MA","RI","NY","VT")))

  id s1
1  1 MA
2  2 MA
3  3 RI
4  4 NY
5  5 VT

其中 ID = 个人参与者标识符,S1 = 居住地。

D2 看起来像:

(DF2 <- data.frame("state"=c("MA","VT"),"score"=1:4))

  state score
1    MA     1
2    RI     2
3    NY     3
4    VT     4

其中 state 是美国的每个州,score 是衡量州级不平等不同方面的指数的值。 (实际上,DF2 有 51 行)。

我正在尝试在 DF1 中创建一个名为 s1_exposure 的新变量,该变量等于分配给 DF2 中每个状态的分数。我正在尝试这样的事情:

levels(DF1$s1)
states_s1 <- levels(DF1$s1)[1:4] # put state names in a list
DF1$s1_exposure <- 99
for(i in states_s1){
  DF1$s1_exposure[DF1$s1==i] <- DF2$score[which(DF2$state==i)]
}

但是得到这个错误:

Error in DF1$s1_exposure[DF1$s1 == i] <- DF2$score[which(DF2$state ==  : 
  replacement has length zero

任何帮助将不胜感激!谢谢。

解决方法

我们可以使用连接

library(dplyr)
DF1 %>%
     left_join(D22,by = c('s1' = 'state'))

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...