2015-07-10 29 views
3

我想在R中做一个简单的减法,但我不知道如何解决它。我想知道如果我必须做一个循环或有一个功能。如何逐列减去一列?

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

Time_Day Diff 
10 10 
15 5 
45 30 
60 15 

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

+0

看看'diff' – Victorp

+0

谢谢你,我不知道这个功能? )) – Marie

回答

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 
+0

谢谢你这个完美的答案! – Marie

+0

很高兴听到:) –

1

这是不是你所需要的尝试?

这里我们列保存为一个变量:

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

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

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

现在我们减去两个:

dif <- c - cm1 

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

dif # 10 5 30 15 
+0

谢谢,但我更喜欢diff或dplyr的简单方法:)) – Marie

+0

很高兴你找到了你的答案!祝你的项目好运。 :-) –

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

谢谢,它运作良好:)) – Marie