我正在使用这个双重条件来获取新列中的输出,但它只给出了第一个匹配,而不是所有匹配条件。 在“score2”列中的第三行和第四行中,为0,2而不是0。 如果有人可以帮助我会很棒。 非常感谢。
id touchpoint_ts tp_type Referrer scores scores2
1 31.10.2017 05:09 a 4 1,7 0
1 13.10.2017 03:19 b 2 0,1 0,2
1 12.10.2017 06:19 b 2 0,1 0
1 12.10.2017 06:19 b 2 0,1 0
1 12.10.2017 06:19 b 0 0,1 0
1 08.09.2017 14:26 a 3 3 0
dataset$scores2<-c(0)
for (i in 1:length(dataset$id)){
if (dataset$tp_type[i] == "b"){
while ((dataset$Referrer[i]) > 1){
dataset$scores2[i]=dataset$scores[i]*2
} } else {
dataset$scores2[i]=0
}
}
答案 0 :(得分:2)
问题在于:
while ((dataset$Referrer[i]) > 1){
dataset$scores2[i]=dataset$scores[i]*2
}
这是真实的,因为你的情况永远有效。
尝试使用这种方法,条件:
cond1<-dataset$tp_type == "b" & dataset$Referrer>1
cond2<-dataset$tp_type == "b" & dataset$Referrer<=1
应用:
dataset[cond1,"scores2"]<-dataset[cond1,"scores"]*2
dataset[cond2,"scores2"]<-0