簡體   English   中英

如何匯總除第一個因素以外的所有行

[英]How to sum up all rows except the 1st which is a factor

我有這個簡單的數據框:

>fruits 
 X Apple Banana Orange
1 1   5.2    5.0    4.2
2 2   2.6    4.4    3.7
3 3   2.7    2.4    2.7
4 4   4.0    1.3    6.2
5 5   6.5    3.1    4.1
6 6   4.2    3.8    5.4

>str(fruits)
'data.fram e':  6 obs. of  4 variables:
 $ X     : Factor w/ 6 levels "1","2","3","4",..: 1 2 3 4 5 6
 $ Apple : num  5.2 2.6 2.7 4 6.5 4.2
 $ Banana: num  5 4.4 2.4 1.3 3.1 3.8
 $ Orange: num  4.2 3.7 2.7 6.2 4.1 5.4

我需要對除第一列以外的所有行進行求和。 我試圖循環:

>for(i in 1:nrow(fruits)) {fruits$total[i] <- sum(fruits[i,-1])} print (fruits$total)

Error: unexpected symbol in "for(i in 1:nrow(fruits)) {fruits$total[i] <-         sum(fruits[i,-1])} print"

有任何想法嗎?

如果@Roland希望發布答案,則將其刪除。 但是,是的, rowSums絕對是我要做的方式。

設置數據以匹配您的數據:

> fruits <- read.table(h=T, text = "X Apple Banana Orange
   1 1   5.2    5.0    4.2
   2 2   2.6    4.4    3.7
   3 3   2.7    2.4    2.7
   4 4   4.0    1.3    6.2
   5 5   6.5    3.1    4.1
   6 6   4.2    3.8    5.4")
> fruits$X <- as.factor(fruits$X)
> sapply(fruits, class)
#        X     Apple    Banana    Orange 
# "factor" "numeric" "numeric" "numeric" 

獲取特定於您的數據集的非因子列的行總和:

> rowSums(fruits[-1])
#    1    2    3    4    5    6 
# 14.4 10.7  7.8 11.5 13.7 13.4 

或者(甚至更好),因為如果您不知道因子列在數據中的位置,則可以使用is.factor的邏輯否定在計算is.factor

> rowSums(fruits[!sapply(fruits, is.factor)])
#    1    2    3    4    5    6 
# 14.4 10.7  7.8 11.5 13.7 13.4  

請記住,最后一行將從計算中刪除所有因子列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM