R从多个.CSV文件

时间:2015-12-22 19:11:14

标签: r csv for-loop

我有多个csv,每个csv包含多个变量的一个参与者的多个观察结果。让我们说每个csv文件看起来如下所示,文件名称表示参与者的ID:

data.frame(
  happy = sample(1:20, 10),
  sad = sample(1:20, 10),
  angry = sample(1:20, 10)
)

我在一个优秀的stackoverflow答案中找到了一些代码,它允许我访问保存到特定文件夹中的所有文件,计算这些情感的总和,并将它们输出到文件中:

# access all csv files in the working directory
fileNames <- Sys.glob("*.csv")

for (fileName in fileNames) {

  # read original data:
  sample <- read.csv(fileName,
                     header = TRUE,
                     sep = ",")

  # create new data based on contents of original file:
  data.summary <- data.frame(
    File = fileName,
    happy.sum = sum(sample$happy),
    sad.sum = sum(sample$sad),
    angry.sum = sum(sample$angry))

  # write new data to separate file:
  write.table(data.summary, 
              "sample-allSamples.csv",
              append = TRUE,
              sep = ",",
              row.names = FALSE,
              col.names = FALSE)}

但是,我只能得到&#34;总和&#34;在这个功能中工作。我想不仅要找到每个参与者的每种情感的总和,还要找到每个参与者的最大值。

当我尝试修改上述内容时:

for (fileName in fileNames) {

      # read original data:
      sample <- read.csv(fileName,
                         header = TRUE,
                         sep = ",")

      # create new data based on contents of original file:
      data.summary <- data.frame(
        File = fileName,
        happy.sum = sum(sample$happy),
        happy.max = max(sample$happy),
        sad.sum = sum(sample$sad),
        angry.sum = sum(sample$angry))

      # write new data to separate file:
      write.table(data.summary, 
                  "sample-allSamples.csv",
                  append = TRUE,
                  sep = ",",
                  row.names = FALSE,
                  col.names = FALSE)}

我收到以下警告消息: 在max(示例$ happy)中:max没有非缺失参数;返回-Inf

真诚地感谢任何人可以给我的建议!

1 个答案:

答案 0 :(得分:1)

使用您的测试数据,max()语句对我来说很好。它与您发布的示例代码和实际的csv文件结构之间的差异有关吗?