首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按因素分列的write.table

按因素分列的write.table
EN

Stack Overflow用户
提问于 2012-08-22 21:30:47
回答 2查看 264关注 0票数 1

考虑到这个dataFrame:

代码语言:javascript
复制
   years random_numbers
1   2003            -24
2   2004            152
3   2005             23
4   2006             73
5   2007             80
6   2008             85
.   ....             ..

生成数据框架的代码:

代码语言:javascript
复制
years = c(rep(2003:2012,4))
random_numbers = as.integer(rnorm(40)*100)
testDF = data.frame(years, random_numbers)

我怎么才能生成ff。文本文件:

  • txt包含数字-24、3、88等。
  • 2004.txt包含152、67、100等数字。

我有点不知所措。我想把年数作为因素,然后以某种方式将它与

代码语言:javascript
复制
write.table(???, ???, append = T, row.names = F,  col.names = T)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-22 22:20:45

plyr包和d_ply使得这很容易。

定义一个写入文件的函数:

代码语言:javascript
复制
myfun <- function(x) {
  filename <- paste0(unique(x$years), '.txt')
  write.table(x$random_numbers, filename, row.names=F, col.names=T)
}

然后用d_ply调用它

代码语言:javascript
复制
d_ply(testDF, .(years), myfun)

不过小心点..。因为它会悄悄地将一堆文件写入当前的工作目录!

票数 2
EN

Stack Overflow用户

发布于 2012-08-22 23:48:01

代码语言:javascript
复制
 sapply(testDF$years, function(x) 
    write.table(testDF[testDF$years==x,], file=paste(x, "txt", sep=".") )
    )

您不希望设置append=T。也可以使用子集:

代码语言:javascript
复制
sapply(testDF$years, function(x) 
    write.table(subset( testDF, years==x), file=paste(x, "txt", sep=".") )
    )
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12081701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档