【问题标题】:How to substract a column by row?如何逐行减去一列?
【发布时间】:2015-07-10 07:42:37
【问题描述】:

我想在 R 中做一个简单的减法,但我不知道如何解决它。我想知道我是否必须做一个循环或者是否有一个函数。

我有一列包含数值变量,我想用 n-1 减去 n。

Time_Day Diff
10  10
15  5
45  30
60  15

因此,我想找到变量“Diff”。

【问题讨论】:

  • 看看?diff
  • 谢谢,我不知道这个功能:))

标签: r calculus


【解决方案1】:

您也可以尝试使用包dplyr

library(dplyr)
mutate(df, dif=Time_Day-lag(Time_Day))
#   Time_Day Diff dif
# 1       10   10  NA
# 2       15    5   5
# 3       45   30  30
# 4       60   15  15

【讨论】:

  • 感谢您的完美回答!
【解决方案2】:

这能满足你的需要吗?

这里我们将列保存为变量:

c <- c(10, 15, 45, 60)

现在我们在开头添加一个 0,然后切断最后一个元素:

cm1 <- c(0, c)[1:length(c)]

现在我们将两者相减:

dif <- c - cm1

如果我们把它打印出来,我们就会得到你想要的东西:

dif # 10 5 30 15

【讨论】:

  • 谢谢,但我更喜欢使用 diff 或 dplyr 的简单方法 :))
  • 很高兴您找到了答案!祝你的项目好运。 :-)
【解决方案3】:

diff

df <- data.frame(Time_Day = c(10, 15, 45, 60))
df$Diff <- c(df$Time_Day[1], diff(df$Time_Day))
df
##  Time_Day Diff
##1       10   10
##2       15    5
##3       45   30
##4       60   15

它在dplyr 也可以正常工作:

library("dplyr")
df <- data.frame(Time_Day = c(10, 15, 45, 60))
df %>% mutate(Diff = c(Time_Day[1], diff(Time_Day)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多