如何逐行减去?

时间:2015-07-10 07:42:37

标签: r calculus

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

我有一个带有数字变量的列,我想将n减去n-1。

Time_Day Diff
10  10
15  5
45  30
60  15

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

3 个答案:

答案 0 :(得分:2)

您也可以尝试使用包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

答案 1 :(得分:1)

这可以满足您的需求吗?

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

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

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

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

现在我们减去两个:

dif <- c - cm1

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

dif # 10 5 30 15

答案 2 :(得分:1)

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