gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:48:17 26 4
gpt4 key购买 nike

我一直在尝试导入多个 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)

我正在尝试使用此循环来融合每个文件并绑定(bind)生成的数据框。但是,它只适用于循环中的最后一个文件。我不知道如何设置循环/函数,以便它可以首先执行每个文件的“融合”,然后将它们“合并/绑定(bind)”到一个数据框中。

for(j in 1:length(data)){
dm<-melt(data[[j]],measure.vars=c(4:length(data[[j]])),
id=c("date.time","tag"),variable.name="receiver")

results<-rbind(dm)

}

任何建议将不胜感激!

最佳答案

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

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 编辑后

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)

关于r - 使用 R 将多个文件融化并合并到一个数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14048577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com