R:rowSums的总和减一

时间:2017-04-16 21:45:35

标签: r csv

对于我的统计课程,我使用R为我的学期项目做一些数学运算。班级没有要求它,但我想通过学习R来补充自己,这是我较弱的语言。

使用这些数据:skittle-data.csv(每一行都是每个学生提交的一个单独的吃喝玩乐包)

我试图生成一些图表和其他东西以满足作业。在这样做的同时,我注意到在确定我被关闭的撞警总数的时候是1。

当我将csv加载到数据帧中时,我会对行进行求和,然后对这些求和求和以得到总和,如下所示:

skittles = read.csv("skittle-data.csv", header = TRUE)
columnTotals = colSums(skittles, na.rm=FALSE, dims = 1)
rowTotals = rowSums(skittles, na.rm=FALSE, dims = 1)
total = sum(rowTotals, na.rm=FALSE, dims = 1)

print("Column Totals")
print(columnTotals)

print("Row Totals (individual bags)")
print(rowTotals)

print('Total skittles')
print(total)

从终端输出运行我的代码:

[1] "Column Totals"
   Red Orange Yellow  Green Purple
   269    289    296    295    300
[1] "Row Totals (individual bags)"
 [1] 62 62 60 60 60 62 59 61 57 59 62 59 59 62 64 62 63 61 60 60 58 59 60 58
[1] "Total skittles"
[1] 1450

然而,excel表明,吃喝玩乐的总数是1449。

skittle data - excel file

这显然是我的用户错误,但我的错误是什么?从概念上讲,我认为我已经正确地做到了这一点,所以我唯一可以假设的是我误解了求和函数的某些部分(colSumsrowSums或{{1} }等等)

2 个答案:

答案 0 :(得分:6)

这是dims = 1中的sum参数。当x = c(1,1)时,sum(x)会给你2,但sum(x, dims = 1)等于3.有关该参数的信息会给予额外的+1。

答案 1 :(得分:5)

您的错误源自sum功能:

total = sum(rowTotals, na.rm=FALSE, dims = 1)

它将dims = 1解释为要添加的数字。删除它,它将按预期工作。