首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用R将多个文件融化并合并到一个数据库中

使用R将多个文件融化并合并到一个数据库中
EN

Stack Overflow用户
提问于 2012-12-27 02:09:43
回答 1查看 1.7K关注 0票数 3

我一直试图导入几个csv文件,使用函数"melt“并将它们合并到R中的一个数据库中,所有的文件都有一个"id”、"date.time“和"tag”列;但是,其余的列在不同的文件中有所不同。这是一个文件中的几行代码的示例:

date.time tag 111015 111016 113949 113950 1 1 2012-10-11 00:00:00 14767 0 0 0 0 2 2 2012-10-11 01:00:00 14767 0 0 0 0 3 3 2012-10-11 02:00:00 14767 0 0 0 0 4 4 2012-10-11 03:00:00 14767 0 0 0 0 5 5 2012-10-11 04:00:00 14767 0 0 0 0 6 6 2012-10-11 05:00:00 14767 0 0 0 0 library(reshape2) # Import files files<-list.files() data<-lapply(files,read.csv,header=TRUE,sep=",",check.names=FALSE)

我试图使用这个循环来融化每个文件并绑定结果数据帧。但是,它仅适用于循环中的最后一个文件。我不知道如何设置循环/函数,以便它能够首先执行每个文件的“熔融”,并将它们“合并/绑定”到一个数据框架中。

对于(j in 1:length(data)){ dm<-熔融(data[j],measure.vars=c(4:length(data[j])),id=c("date.time","tag"),variable.name="receiver")结果<-rbind(Dm)}

如有任何建议,将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-27 02:23:18

最好先使用lapply加载所有内容,然后按以下方式使用melt:(假设所有文件都在变量files中),

代码语言:javascript
复制
Note: Untested 
require(reshape2)
files <- list.files(my.dir, full.names = TRUE)
# first load all files
dd <- lapply(1:length(files), function(idx) {
    d <-read.csv(files[idx], header = TRUE, sep=",", check.names = FALSE)
    # if you want the file index
    d$file.idx <- idx
    d
})
# merge all
dd <- do.call(rbind, dd)
# now melt
dd.m <- melt(dd, c(4:length(d)), c("date.time","tag"), variable.name = "receiver")

编辑:在Op编辑之后

代码语言:javascript
复制
Note: Untested 
require(reshape2)
files <- list.files(my.dir, full.names = TRUE)
dd.m <- lapply(1:length(files), function(idx) {
    # load the file
    d <-read.csv(files[idx], header = TRUE, sep=",", check.names = FALSE)
    # now melt immediately
    d.m <- melt(d, c("date.time","tag"), c(4:length(d)))
})
# merge all
dd.m <- do.call(rbind, dd.m)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14048577

复制
相关文章

相似问题

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