如何基于另一个列创建具有重复值的新列?

时间:2018-11-27 15:12:51

标签: r

这是我目前拥有的。我有一个名为“ test1M”的列,其值为0或1。如果值为1,我想将“ test1Mxx”列中的下20个值设置为值1。

如果运行此代码,则会收到错误(if(data(test $ M1x [x] == 1)中的错误){:参数的长度为零)。

对我来说,有什么更好的方法?该代码是非常重复的,因此,如果可能的话,我希望将其最小化。如果有一种方法可以将其转换为更好的功能,那么我可以更改值的数量(例如,以下25个值或40个值等)

for(x in data$test1){
  if(data$test1[x]==1){
    data$test2[x+1]=1
    data$test2[x+2]=1
    data$test2[x+3]=1
    data$test2[x+4]=1
    data$test2[x+5]=1
    data$test2[x+6]=1
    data$test2[x+7]=1
    data$test2[x+8]=1
    data$test2[x+9]=1
    data$test2[x+10]=1
    data$test2[x+11]=1
    data$test2[x+12]=1
    data$test2[x+13]=1
    data$test2[x+14]=1
    data$test2[x+15]=1
    data$test2[x+16]=1
    data$test2[x+17]=1
    data$test2[x+18]=1
    data$test2[x+19]=1
    data$test2[x+20]=1}
 }

1 个答案:

答案 0 :(得分:1)

您的循环不起作用,因为xdata$test1的值,而不是它的索引。您需要类似的东西:

data$test2 <- data$test1
for (x in seq_along(data$test1))
  if (data$test1[x] == 1) data$test2[x + 1:20] <- 1