有没有办法找到多个数据帧中的最小值?

时间:2018-08-16 00:21:21

标签: r

我有大约20个数据框,它们的格式和尺寸完全相同,共有六列。每个数据帧之间的唯一区别是第六列中的不同值。我想对所有数据帧进行循环,以便在第六列的所有数据帧中获得最小值。我的计划是列出向量中的所有数据帧,然后遍历向量,然后遍历数据帧的每一行,尽管我不确定如何实现类似的东西。我将不胜感激任何建议。

2 个答案:

答案 0 :(得分:0)

如果您的目标是仅考虑所有数据帧中的最后一列(第6列)来找到最小值,那么以下是一种解决方案:

DF <- rbind (df1, df2, ..., df20)  # Combine data frames, vertically
last_col <- DF [, ncol(DF)]        # Only care about 6th column
min(last_col)

答案 1 :(得分:0)

如果数据帧是DF1,DF2,...,DF20,则假定您想要数据帧DF,使得DF [i,j] = min(DF1 [i,j],DF2 [i,j], ...,DF20 [i,j])然后:

L <- list(DF1, DF2, DF3, DF4, DF5, DF6, DF7, DF8, DF9, DF10,
          DF11, DF12, DF13, DF14, DF15, DF16, DF17, DF18, DF19, DF20)
Reduce(pmin, L)

do.call(pmin, L)

pmin(DF1, DF2, DF3, DF4, DF5, DF6, DF7, DF8, DF9, DF10,
          DF11, DF12, DF13, DF14, DF15, DF16, DF17, DF18, DF19, DF20)

除了将其写出来外,我们还可以通过其他方式获得L

  1. 如果我们在字符向量Names中具有数据帧的名称,则L <- mget(Names, .GlobalEnv),并且如果我们知道数据帧都具有名称DF,后跟数字,则我们可以使用Names

  2. 来形成Names <- ls(pattern = "^DF\\d+$")
  3. 如果全局环境中仅有的数据帧是DF1,DF2,...,DFn,那么我们可以像这样形成L

    m <- mget(ls(), envir = .GlobalEnv, mode = "list", ifnotfound = NA)
    L <- Filter(is.data.frame, m)