如何逐行减去一列?

How to substract a column by row?

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

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

Time_Day Diff
10  10
15  5
45  30
60  15

因此,我想找到变量"Diff"。

你也可以试试包 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

这是否满足您的需求?

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

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

现在我们在开头加一个0,然后截掉最后一个元素:

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

现在我们减去两者:

dif <- c - cm1

如果我们打印出来,我们就会得到您要找的东西:

dif # 10 5 30 15

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)))