5

我正在处理一份大型问卷 - 我为不同的问题(例如 df1 和 df2)制作了汇总频率表。

a<-c(1:5)
b<-c(4,3,2,1,1)
Percent<-c(40,30,20,10,10) 
df1<-data.frame(a,b,Percent)
c<-c(1,1,5,2,1)
Percent<-c(10,10,50,20,10)
df2<-data.frame(a,c,Percent)
rm(a,b,c,Percent)

我通常使用以下命令将数据帧导出为 csv 文件:

write.csv(df1 ,file="df2.csv")

但是,由于我的问卷有很多问题,因此有很多数据框,我想知道 R 中是否有一种方法可以组合不同的数据框(比如用一条线分隔它们),然后将它们导出到 csv(然后最终在 Excel 中打开它们) ? 因此,当我打开 Excel 时,我将只有一个文件,其中包含我所有的问题数据框,一个在另一个之下。这个 csv 文件比我必须依次打开以查看结果的单个文件要容易得多。

提前谢谢了。

4

2 回答 2

4

如果您的最终目标是 Excel 电子表格,我会研究 R 中用于直接编写 xls 文件的一些工具。就我个人而言,我使用XLConnect包,但也有xlsx以及write.xls在各种包中浮动的几个函数。

我碰巧喜欢XLConnect,因为它允许在以下情况下进行一些方便的矢量化:

require(XLConnect)

#Put your data frames in a single list
# I added two more copies for illustration
dfs <- list(df1,df2,df1,df2)

#Create the xls file and a sheet
# Note that XLConnect doesn't seem to do tilde expansion!
wb <- loadWorkbook("/Users/jorane/Desktop/so.xls",create = TRUE)
createSheet(wb,"Survey")

#Starting row for each data frame
# Note the +1 to get a gap between each
n <- length(dfs)
rows <- cumsum(c(1,sapply(dfs[1:(n-1)],nrow) + 1))

#Write the file
writeWorksheet(wb,dfs,"Survey",startRow = rows,startCol = 1,header = FALSE)
#If you don't call saveWorkbook, nothing will happen
saveWorkbook(wb)

我指定header = FALSE,否则它将为每个数据帧写入列标题。但是在最后的 xls 文件的顶部添加一行并不是什么额外的工作。

于 2012-02-10T16:59:36.020 回答
1

正如詹姆斯评论的那样,你可以使用

merge(df1, df2, by="a")

但这会水平组合数据。如果你想垂直组合它们,你可以使用rbind

rbind(df1, df2, df3,...)

(注意:列名需要匹配rbind才能工作)。

于 2012-02-10T16:40:02.883 回答