我有一个简单的数据框架:
>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"
有什么想法吗?
2条答案
按热度按时间0x6upsns1#
如果@罗兰想发布答案,我会删除这个。但是,是的,
rowSums
绝对是我的做法。设置数据以匹配您的数据:
获取特定于您的数据集的非因子列的行总和:
或者(甚至更好),如果您不知道因子列在数据中的位置,则可以使用
is.factor
的逻辑非在计算中删除它们请记住,最后一行将从计算中删除所有因子列。
yhxst69z2#
我和author有一个相似的主题,但是我希望保留在我的表中进行计算,因此我指定了要在
rowSums()
中使用的列名作为解决方案,如下所示: