2015-07-10 28 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