【问题标题】:automatically calculating the average and st dev for multiples data frames and excluing the first column in each自动计算多个数据帧的平均值和标准偏差,并排除每个数据帧中的第一列
【发布时间】:2019-03-23 22:53:28
【问题描述】:

我基本上是 R 的新手,但需要为我的论文制作一些情节。

我正在处理已导出包含扫描组的 csv 的高光谱数据。我已经读取了数百个读数,即使对光谱进行分组,这也会产生许多单独的 csv 文件。

在每个 csv 中,x 轴位于第一列,每列包含独立光谱的强度。列数根据该组中进行的扫描次数而有所不同。

我正在尝试在每个数据框中创建与平均值和标准差相对应的新列。

我还想创建另一个数据框,将新的均值和标准差列拉出并将它们放入新的数据框。

【问题讨论】:

  • 能否请您发布一个可重现的数据示例?您能否也提供您用来尝试解决问题的代码?这将有助于帮助您找到解决方案。

标签: r dataframe automation apply spectra


【解决方案1】:

如果没有可重现的示例,就不可能测试下面的代码,但我会按照它的思路做一些事情。

old_dir <- setwd("path/to/dir")
filenames <- list.files(pattern = "\\.csv")
df_list <- lapply(filenames, read.csv)

df_list <- lapply(df_list, function(DF){
  DF[["Mean"]] <- rowMeans(DF[-1], na.rm = TRUE)
  DF[["StdErr"]] <- apply(DF[-1], 1, sd, na.rm = TRUE)
  DF
})

new_list <- lapply(df_list, function(DF){
  data.frame(Mean = DF[["Mean"]], StdErr = DF[["StdErr"]])
})

setwd(old_dir)

注意new_list 是"list" 类的对象。你要求一个新的data.frame 与手段和sd's。如果原始文件的列数和行数不同,这是不可能的。

【讨论】:

  • 您好 Rui,对不起,我没有提供代码块,但您似乎几乎解决了我的问题。我运行了您提供的代码,它运行良好。我应该说我希望将代码放入一个新列中,该列附加到计算它们的电子表格中。现在我正在绞尽脑汁试图解决这个问题。
  • @AlexanderSousa 最后一个df_list 中的DF 不是你需要的吗?
  • 对不起,Rui,我不确定你的意思。从我的角度来看,这一切都非常先进。
  • 嗯。我想我明白你的意思了。我应该使用读取 >df_list
  • @AlexanderSousa 所以你是说你想用新创建的列写回数据帧?我对这个问题的理解不同,您只是在问如何创建列。
猜你喜欢
  • 2015-06-08
  • 2014-09-28
  • 2021-08-07
  • 1970-01-01
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
相关资源
最近更新 更多