代码之家  ›  专栏  ›  技术社区  ›  user7096526

R中最大差值的新列

  •  -1
  • user7096526  · 技术社区  · 7 年前

    我有一个数据帧,如:

    A   1 2 3 4
    B   4 5 6 9
    C   2 3 4 5 
    

    我想计算每行的最大差值,并将其放入新列中:

    A   1 2 3 4  3 (4-1)
    B   4 5 6 9  3  (9-6)
    C   1 3 4 5  4  (5-1)
    

    有什么想法吗??

    非常感谢。

    1 回复  |  直到 7 年前
        1
  •  2
  •   KenHBS    7 年前

    有多种方法可以做到这一点。评论中提到了两个。我喜欢使用 range() diff() .

    范围() 提供向量中的最小值和最大值。 给出向量中值之间的差。应用 差异() 到的输出 范围() 因此将为您提供最大值。

    使用 apply() 具有 axis=1 ,对您的数据按行执行此操作。框架:

    df$X5 <- apply(df, 1, function(x) diff(range(x)))
    df
      X1 X2 X3 X4 X5
    A  1  2  3  4  3
    B  4  5  6  9  5
    C  2  3  4  5  3