我们可以在R中创建两个data.frame:
Y1 <- c(14,12,11,12)
Y2 <- c(13,10,15,16)
df1 <- data.frame(Y1,Y2)
rownames(df1) <- c('boy','girl','man','woman')
A <- 1:5
type_y <- c(1,1,2,1,2)
SEX <- c('boy','girl','boy','man','woman')
df2 <- data.frame(A,type_y,SEX)
我想在df2
中创建一个新变量,比如x
,匹配
SEX
使用df1
&amp; Type_y
值及相应的Y1 | Y2
值 所以我们的df2$x
== 14,12,13,11,16
答案 0 :(得分:1)
我们通过match
'df2'的'SEX'和'df1'('i1')的行名创建数字索引。我们根据'i1',cbind
('m1')得到'Y1'和'Y2'的相应元素,根据行(1:nrow(df2)
)列提取'm1'的元素(df2$type_y
)索引。
i1 <- match(df2$SEX, row.names(df1))
m1 <- cbind(df1$Y1[i1], df1$Y2[i1])
df2$x <- m1[cbind(1:nrow(df2), df2$type_y)]
df2$x
#[1] 14 12 13 11 16