首页 > 解决方案 > 如何基于另一列创建具有重复值的新列?

问题描述

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

如果我运行这段代码,我会收到一个错误(if (data$test1M[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}
 }

标签: r

解决方案


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

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

推荐阅读