R条件循环。错误只占第一个元素

时间:2018-04-06 13:49:16

标签: r loops if-statement while-loop conditional-statements

我正在使用这个双重条件来获取新列中的输出,但它只给出了第一个匹配,而不是所有匹配条件。 在“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
    }
}

1 个答案:

答案 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