簡體   English   中英

按因素寫的

[英]write.table by factors

鑒於此dataFrame:

   years random_numbers
1   2003            -24
2   2004            152
3   2005             23
4   2006             73
5   2007             80
6   2008             85
.   ....             ..

生成數據框的代碼:

years = c(rep(2003:2012,4))
random_numbers = as.integer(rnorm(40)*100)
testDF = data.frame(years, random_numbers)

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

  • 2003.txt包含數字-24,3,88等。
  • 2004.txt包含數字152,67,100等。

我有點迷失了怎么做。 我想把多年作為因素,然后以某種方式將它與它結合起來

write.table(???, ???, append = T, row.names = F,  col.names = T)

plyr包和d_ply使這很容易。

定義一個寫入文件的函數:

myfun <- function(x) {
  filename <- paste0(unique(x$years), '.txt')
  write.table(x$random_numbers, filename, row.names=F, col.names=T)
}

然后用d_ply調用它:

d_ply(testDF, .(years), myfun)

但要小心這一點......因為它會默默地將一堆文件寫入當前的工作目錄!

 sapply(testDF$years, function(x) 
    write.table(testDF[testDF$years==x,], file=paste(x, "txt", sep=".") )
    )

你不想設置append = T. 也可以使用子集:

sapply(testDF$years, function(x) 
    write.table(subset( testDF, years==x), file=paste(x, "txt", sep=".") )
    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM