0

我有 40 个 CSV 文件。在每个中,有一列名称。在每个名称列中,可能会重复相同的名称(总共,名称列平均有 20,000 行,大约一半是唯一的)。我想创建一个出现在多个文件中的名称列表(同时被告知出现在哪些文件中)。如果相同的名称出现在多个文件中,我想知道每个文件的名称。

所以,在小范围内:

  File1
  Name
  John
  Peter
  Abby
  John


  File2
  Mike
  Tim
  John
  Anothername


  File3
  Me
  Mike
  Adam
  Eve

我想要的输出是这样的:

data.frame
Names         File
John           1
John           2
Mike           2
Mike           3
4

1 回答 1

1

如果您将所有 csvs 放入列表中,您可能会采用以下方法:

#generate a fake data set easy to work with
LIST <- lapply(rpois(10, 10), function(i)data.frame(id=1:i, state=sample(state.name, i)))

#add the file number as a column
v <- lapply(1:length(LIST), function(i)data.frame(LIST[[i]], file=rep(i, nrow( LIST[[i]]))))

#make one big data frame
dat <- do.call(rbind, v)[, -1]

#reorder said data frame
dat[order(dat$state, dat$file), ]
于 2012-09-27T16:20:03.750 回答