【问题标题】:Struggling to build a merged data frame to analysis on努力建立一个合并的数据框来分析
【发布时间】:2017-02-25 18:39:08
【问题描述】:

我在尝试获取一个包含 csv 文件的文件夹并将它们合并到一个数据框中时迷失了方向。这些文件夹在一个文件夹(当前是我的工作目录)中编号为 1 到 332.csv。

我想要完成的是一个数据框,我可以提取一列完整案例的平均值和完整案例的计数。

这是我的代码当前所在的位置

# List a set of  the files
fileList = list.files(pattern="*.csv")

# Make data frame for each file
df = c(rep(data.frame(), length(fileList)))

# Read csv files into data frames
for (i in 1:length(fileList)) { df[[i]] <- as.list(read.csv(fileList[i])) }

#merge data frames into a single data frame
fullFrame <- rbind(df[[i]])

#isolate to just complete cases
completeFrame <- complete.cases(fullFrame)

fullFrame[completeFrame]

我的期望是对所有案例有一个大表状的视图,但不存在任何案例。

而是输出

> fullFrame[completeFrame]

[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL

[[5]]
NULL

[[6]]
NULL

[[7]]
NULL

[[8]]
NULL

[[9]]
NULL

[[10]]
NULL

[[11]]
NULL

[[12]]
NULL

[[13]]
NULL

[[14]]
NULL

[[15]]
NULL

[[16]]
NULL

【问题讨论】:

  • 这不是stackoverflow.com/questions/11433432/…的复制品吗?
  • 类似:do.call(rbind, lapply(list.files(), function(i){ x &lt;- read.delim(i); complete.cases(x) }) ?
  • 该问题的答案: temp = list.files(pattern="*.csv") myfiles = lapply(temp, read.delim) 将 332 个数据帧导入到一个列表中,这样就解决了我的问题的前半部分很好,但我不明白如何将它们重新绑定在一起,比如说,得到一个平均值。我只有一个包含 332 个独立元组的​​列表。

标签: r csv merge


【解决方案1】:

即使你想要一个 data.frame,data.table 也提供了非常快速和防愚蠢的功能来处理这个确切的问题:

library(data.table)

fileList <- list.files(pattern="*.csv")
listing <- lapply(fileList, fread)
dt <- rbindlist(listing) # if unequal columns add ,fill = TRUE
dt <- na.omit(dt)
df <- as.data.frame(dt)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 2020-06-14
    • 2020-03-10
    • 1970-01-01
    • 2020-10-17
    相关资源
    最近更新 更多