使用R来操作excel电子表格数据并将输出返回到单独的工作表

时间:2013-03-31 03:52:55

标签: r excel

所以我有这个名为'Birth.xls'的Excel电子表格。 我在这个单一的电子表格中有10张这种格式:

Sheet1
Number  Value 
3   0.125
6   0.2
9   0.275
12  0.35
15  0.425
17  0.5
19  0.575
21  0.65
23  0.725
25  0.8
27  0.875
29  0.95
31  1.025
Sheet2
Number  Value
3   0.614
6   0.654
9   0.694
12  0.734
15  0.774
17  0.814
19  0.854
21  0.894
23  0.934
25  0.974
27  1.014
29  1.054
31  1.094

如何在此电子表格中创建另一个'工作表',其中包含我在上面使用R给出的工作表的行平均值?...我知道我可以在excel中执行此操作,但因为我有时会有10张或更多,这可能会非常痛苦......尤其是当我不得不做比平均更复杂的事情时...总而言之,我希望输出类似于下面的输出

Sheet3
Number  Average Value
3   0.3695
6   0.427
9   0.4845
12  0.542
15  0.5995
17  0.657
19  0.7145
21  0.772
23  0.8295
25  0.887
27  0.9445
29  1.002
31  1.0595

1 个答案:

答案 0 :(得分:3)

这是我要做的一种方式。首先,加载所有数据,将它们作为一个数据框,计算均值,然后导出到新工作表。

library(XLConnect)

#load xls file
wb<-loadWorkbook("Birth.xls")

#get sheet names of file
lp<-getSheets(wb)

#load each sheet in seperate list element
dat<-lapply(seq_along(lp),function(i) readWorksheet(wb,sheet=lp[i]))

#convert all data to one data frame by merging individual data frame
dat2<-Reduce(function(...) merge(..., by="Number"), dat)

#calculate row means  of merged data frames (-1 as first column contains Number)
dat2$res<-rowMeans(dat2[,-1])

#create new sheet to export data
createSheet(wb, name = "together")

#write calculated data to new sheet
writeWorksheet(wb,dat2[,c("Number","res")],sheet="together")

#save workbook
saveWorkbook(wb)