【发布时间】:2013-03-15 18:10:47
【问题描述】:
我有一个非常琐碎的问题,数据如下:
sample<-list(c(10,12,17,7,9,10),c(NA,NA,NA,10,12,13),c(1,1,1,0,0,0))
sample<-as.data.frame(sample)
colnames(sample)<-c("x1","x2","D")
>sample
x1 x2 D
10 NA 1
12 NA 1
17 NA 1
7 10 0
9 20 0
10 13 0
注意:D=1 的观察次数与 D=0 相同
现在,我想创建一个变量x3,当D=1 时,它的值与D=0 相关,当D=0 时,它的值与D=1 相关。预期输出:
x1 x2 D x3
10 NA 1 10
12 NA 1 20
17 NA 1 13
7 10 0 NA
9 20 0 NA
10 13 0 NA
我尝试使用ifelse函数如下:
sample.data$x3<-with(sample.data, ifelse(D==1,x2[which(D==0)],x2[which(D==1)]))
我收到以下错误:
logical(0)
我还尝试了以下方法:
sample.data$x3<-with(sample.data, ifelse(D==1,tail(x2,3),head(x2,3)))
我又遇到了同样的错误:
logical(0)
知道这里发生了什么吗?
【问题讨论】:
-
sample$x3 <- sample$x2[order(sample$D)] -
感谢快捷解决方案。
标签: r if-statement multiple-columns