更改具有不同大小的数据框中的列名称

时间:2014-03-01 21:55:39

标签: r

我有多个文件,我想将其读入单个数据帧。所以,我使用了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

2 个答案:

答案 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))