【问题标题】:Splitting one big dataframe into multiple CSV.files [closed]将一个大数据框拆分为多个 CSV.files [关闭]
【发布时间】:2020-02-06 18:25:59
【问题描述】:

首先,我有一个有 104 行和 12 列的大 data.frame,我想将它分成 13 行,每行 8 行,每行 12 列。

我正在尝试使代码足够健壮,不关心有多少行,而是简单地每 8 行创建一个新的 data.frame。

此外,在此之后是否可以编写一个循环通过 13 个 data.frames 进行某些计算的代码?

【问题讨论】:

  • See here 提出一个人们可以帮助解决的 R 问题。这包括数据样本、所有必要的代码以及您尝试过的内容。 thisthisthis 发帖没有帮助吗?
  • Map(function(x,y) write.csv(x,paste0("file",y,".csv"),rownames = FALSE),split(your_data, rep(1:13, each = 8, length = 104)),1:13)
  • 当然,将硬编码的104 更改为nrow(your_data),您就有了更通用的解决方案:-)
  • 不硬编码“13”的rep 的替代方案是(seq_len(nrow(your_data)) - 1) %/% 8(进一步概括为制作的集合数量,这取决于框架的大小) .

标签: r loops dataframe split


【解决方案1】:

这是使用data.table.split的一种方式

library(data.table)

#sample data
set.seed(123)
AA <- data.frame( data = rnorm(104) )

#set number of rows to split on
chunksize = 8
#split on create rowid's
l <- split( setDT(AA)[, rowID := (.I-1) %/% chunksize][], by = "rowID")
#names of the list will become the names of the data.frames
names(l) <- paste0( "df", names(l) )
#write the elements of the list to the global environment, using their names
list2env( l, envir = globalenv() )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-30
    • 2023-03-10
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2020-12-21
    相关资源
    最近更新 更多