我正在寻找一个新的变量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)
答案 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))