我有多个文件,我想将其读入单个数据帧。所以,我使用了net提供的代码:
setwd("target_dir/")
file_list <- list.files()
for (file in file_list) {
# if the merged dataset doesn't exist, create it
if (!exists("dataset")) {
dataset <- read.table(file, header=TRUE, sep="\t")
}
# if the merged dataset does exist, append to it
if (exists("dataset")) {
temp_dataset <-read.table(file, header=TRUE, sep="\t")
dataset<-rbind(dataset, temp_dataset)
rm(temp_dataset)
}
}
我把所有行都放到了一个数据帧中。但问题是标题不合适。 即: 当我给出
names(dataset)
它让我回复:
[1] "Age.Gender.Impressions.Clicks.Signed_In"
虽然我需要的是:
[1] "Age" "Gender" "Impressions" "Clicks" "Signed_In"
以某种方式,文件的标头未正确地进入合并的数据帧。有人可以帮我解决这个问题吗?
示例数据:
head(data1)
结果
Age Gender Impressions Clicks Signed_In
1 36 0 3 0 1
2 73 1 3 0 1
3 30 0 3 0 1
4 49 1 3 0 1
5 47 1 11 0 1
6 47 0 11 1 1
有 头(DATA2)
Age Gender Impressions Clicks Signed_In
1 48 1 3 0 1
2 0 0 9 1 0
3 15 1 4 0 1
4 0 0 5 0 0
5 0 0 7 1 0
6 0 0 11 0 0
答案 0 :(得分:1)
这应该可行,它们是空格分隔的.txt文件可能
file_list <- list.files()
for (file in file_list) {
# if the merged dataset doesn't exist, create it
if (!exists("dataset")) {
dataset <- read.table(file, header=TRUE, sep=" ")
}
# if the merged dataset does exist, append to it
if (exists("dataset")) {
temp_dataset <-read.table(file, header=TRUE, sep=" ")
dataset<-rbind(dataset, temp_dataset)
rm(temp_dataset)
}
}
或者只是忽略sep =
参数。
答案 1 :(得分:1)
不是您特定问题的答案,但有一种更简单的方法:
file_list <- list.files(pattern=".csv")
dataset <- do.call(rbind, lapply(file_list, read.csv, header=T))