如何使用另一个变量作为索引来创建变量?

时间:2019-07-10 15:02:02

标签: r

我正在寻找一个新的变量d,该变量基于变量c从a或b中获取值。

dat = data.frame(a=1:10,b=11:20,c=rep(1:2,5))

结果将是:

d = c(1,12,3,14,... etc)

3 个答案:

答案 0 :(得分:1)

我们可以使用row/column索引,其中行索引是行的序列,列索引是'c'列,cbind并根据此索引从数据集中提取元素

dat$d <- dat[1:2][cbind(seq_len(nrow(dat)), dat$c)]
dat$d
#[1]  1 12  3 14  5 16  7 18  9 20

注意:当要提取多个列值时,这也应该起作用。

答案 1 :(得分:0)

你可以

dat$d <- ifelse(dat$c==1,dat$a,dat$b)

答案 2 :(得分:0)

dplyr的变体

dat %>% 
  mutate(d = case_when(c==1 ~ a, 
                       TRUE ~ b))