【问题标题】:R offset all the values in certain columns by one unit [duplicate]R将某些列中的所有值偏移一个单位[重复]
【发布时间】:2021-11-24 10:44:15
【问题描述】:

这是我下面的数据集。我正在尝试将Col1, Col2, Col3, Col4 中的所有值偏移 1

ID      Col1    Col2    Col3    Col4
314     3       4       4       3
820     1       3       1       2
223     1       1       3       1
915     1       3       4       4
542     1       2       3       4
521     4       1       3       4
978     4       2       4       2
260     3       3       1       2
892     1       4       1       2

最终的数据集应该如下所示

ID      Col1    Col2    Col3    Col4
314     2       3       3       2
820     0       2       0       1
223     0       0       2       0
915     0       2       3       3
542     0       1       2       3
521     3       0       2       3
978     3       1       3       1
260     2       2       0       1
892     0       3       0       1

我知道一些方法可以做到这一点,但我担心它们可能无法给我准确的结果。对此的任何建议都非常感谢。提前致谢。

【问题讨论】:

    标签: r offset


    【解决方案1】:

    算术运算是矢量化的。我们可以直接从数字列中减去 1 并将其分配回去

    df1[-1] <- df1[-1] - 1
    

    -输出

    > df1
       ID Col1 Col2 Col3 Col4
    1 314    2    3    3    2
    2 820    0    2    0    1
    3 223    0    0    2    0
    4 915    0    2    3    3
    5 542    0    1    2    3
    6 521    3    0    2    3
    7 978    3    1    3    1
    8 260    2    2    0    1
    9 892    0    3    0    1
    

    数据

    df1 <- structure(list(ID = c(314L, 820L, 223L, 915L, 542L, 521L, 978L, 
    260L, 892L), Col1 = c(3L, 1L, 1L, 1L, 1L, 4L, 4L, 3L, 1L), Col2 = c(4L, 
    3L, 1L, 3L, 2L, 1L, 2L, 3L, 4L), Col3 = c(4L, 1L, 3L, 4L, 3L, 
    3L, 4L, 1L, 1L), Col4 = c(3L, 2L, 1L, 4L, 4L, 4L, 2L, 2L, 2L)), 
    class = "data.frame", row.names = c(NA, 
    -9L))
    

    【讨论】:

      猜你喜欢
      • 2020-11-01
      • 2016-11-21
      • 2016-09-24
      • 1970-01-01
      • 2017-02-26
      • 2019-10-22
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      相关资源
      最近更新 更多