2014-01-21 30 views
0

问题:我有以下问题。在R中,我为变量创建汇总统计信息并将它们从最高值排序到最低值。记录(行)的数量可以在20到100之间,具体取决于变量。为了创建所需的输出,我必须从R输出中取前10行,然后为11到N行,我必须在Excel中对其进行求和,并将结果记录作为第11个变量添加到我的列表中。这是非常低效的,因为我必须在Excel和R之间继续前进,并且宁愿在R本身执行它。R第11次将N列记录列入第11列

R代码里面

one = aggregate(rail11$Tons,rail11['STCC4'],sum) 
answer = data.frame(Commodity=one$STCC4, PATons=one$x) 
answer1 <- answer[order(-answer$PATons), ] # Sort it from Highest to lowest 
# answer2 <- answer1[1:10,] # This line takes only the top 10 records 
write.table(answer1, "testdata.csv",sep=",", row.names=FALSE) 

我已上载的实际输出和期望输出到谷歌驱动,这样就可以测试代码。来自R代码

输出:实际实际来自R代码:来自R Testdata.csv

所需的输出:来自R所需的输出sumrow.csv

在此先感谢您的帮助。

Krishnan

回答

2

你一次只处理一列吗?看起来不是。尝试

answer2[11,] <- apply(answer1[11:dim(answer1)[1], ], 2, sum) 

而且

answer2[11,] <- colSums(answer1[11:dim(answer1)[1], ]) 

应该工作。

+0

感谢您的代码和帮助。略微修改代码以给出正确的答案。 – Krishnan

+0

没问题。如果你告诉我我错了什么,我可以为未来的观众更新我的答案。 – martin

+0

根据您的建议更新。谢谢。 – martin