如何在多个csv文件中获取每个列的唯一值

时间:2014-05-15 19:30:49

标签: r loops dataframe lapply

我对R比较新,所以请耐心等待。我有50多个csv文件,我希望能够浏览每个文件并获取每个列的独特值。它们都被格式化为第一行是标题。

理想输出将是指示每个csv的文件名,列标题和唯一值的数据帧。这些是每列的唯一值,一次一个,而不是列的组合中的任何唯一性。

非常感谢任何帮助!

以下是我如何将唯一值作为列表获取,但我不确定下一步该做什么:

lapply(files, function(x) {
  t <- read.csv(x, header=TRUE) # load file
  unq <- apply(t, 2, unique)
})

1 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

do.call(rbind, lapply(files, function(x) {
  dat <- read.csv(x, header=TRUE)
  do.call(rbind, lapply(seq(ncol(dat)), function(idx) {
    data.frame(filename=x, column=colnames(dat)[idx],
               value=unique(dat[,idx]))
  }))
}))

外部lapply为您的每个文件x返回一个数据框,内部lapply为{{1}内每个编号为idx的列返回一个数据框}}