我正在编写一份大问卷 - 我为不同的问题(例如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文件比拥有单个文件要容易得多,我必须依次打开这些文件来查看结果。
非常感谢提前。
答案 0 :(得分: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文件的顶部添加一行并不是一件额外的工作。
答案 1 :(得分:1)
正如詹姆斯评论的那样,你可以使用
merge(df1, df2, by="a")
但这将水平组合数据。如果要将它们垂直组合,可以使用rbind
:
rbind(df1, df2, df3,...)
(注意:列名需要匹配rbind
才能正常工作)。