2012-03-10 67 views
5

對不起,我確定已經提出了類似的問題,但我恐怕找不到它。我只想在數據框中總結許多變量。作爲一個小例子,我想要做的就是如下計算df $ e。R數據框內的變量總和

df <- data.frame(a=c(1,2,3,4,5), b=(c(6,7,8,9,10)), 
       c=c(1,2,3,4,5), d=(c(6,7,8,9,10))) 

df$e <- with(df, a+b+c+d) # this is the right answer 

但我想說DF $ê<表達出來 - 「所有的a和d之間的變量的總和」

謝謝!標記中的幫助也表示讚賞。

答:df$e <- rowSums(subset(df, select=a:d))

我沒有表達,我需要它很清楚,但我一無所知,subset因爲我是rowSums

+0

如果你可以用一個矩陣/桌,工作'addmargins'和'margin.table'可以來得心應手。 – 2012-03-11 07:47:32

回答

10

您是否在尋找rowSums()

> df <- data.frame(a=c(1,2,3,4,5), b=(c(6,7,8,9,10)), 
+     c=c(1,2,3,4,5), d=(c(6,7,8,9,10))) 
> with(df, a+b+c+d) 
[1] 14 18 22 26 30 
> rowSums(df) 
[1] 14 18 22 26 30 
> 

,你當然也可以分配回df

> df$e <- rowSums(df) 
> df 
    a b c d e 
1 1 6 1 6 14 
2 2 7 2 7 18 
3 3 8 3 8 22 
4 4 9 4 9 26 
5 5 10 5 10 30 
> 
+0

看起來像它:)但我需要引用引用第一個和最後一個連續列名稱,而不是整個數據框。我會怎麼做? – 2012-03-11 00:06:21

+0

相應地將參數置入'rowSums'。 – 2012-03-11 00:08:03

+0

對不起,這正是我所要求的。我會繼續查看,看看我能否找到答案,然後才能返回此頁面。 – 2012-03-11 00:29:56

2

您是否正在尋找一種方式來沒有明確寫出來a + b + c + d + ...

如果是這樣,怎麼樣rowSums()

df$e <- with(df, rowSums(df)) 
+0

謝謝......與Dirk相同的評論,是的,但我需要引用引用第一個和最後一個連續列名稱而不是整個數據框。我會怎麼做? – 2012-03-11 00:07:57