r - 如何拆分 data.frame 列表并将函数应用于一列?

标签 r list dataframe lapply

我有一个关于应用函数的小问题。
例如我有:

l <- list(a = data.frame(A1=rep(10,5),B1=c(1,1,1,2,2),C1=c(5,10,20,7,30)),
          b = data.frame(A1=rep(20,5),B1=c(3,3,4,4,4),C1=c(3,5,10,20,30)))

我想为每个 B1 找到一个最小的 C1。结果应该是
$a
  A1 B1 C1
  10  1  5
  10  2  7

$b
  A1 B1 C1
  20  3  3
  20  4  10

我知道如何用 'for' 来做,但是用 'lapply' 必须是一种更简单的方法,但我无法让它工作。

请帮忙

最佳答案

结合如何lapplytapply :

lapply(l, function(i) tapply(i$C1, i$B1, min))
$a
1 2 
5 7 

$b
3  4 
3 10 

考虑多个操作的技巧是将任务拆分为位。所以,
  • 最低 C1每个B1 .我们如何为 执行此操作单例数据框?
    i = l[[1]]
    tapply(i$C1, i$B1, min)
    
  • 列表的每个元素?只需使用 lapply :
    lapply(l, function(i) tapply(i$C1, i$B1, min))
    

  • 如果您不能完成第 1 步,您将无法管理第 2 步。

    关于r - 如何拆分 data.frame 列表并将函数应用于一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14829784/

    相关文章:

    r - 为什么 nchar 会为 R 中的大数值变量返回错误的值?

    r - R 中使用汇总数据的方差分析

    python - 如果我有多个字段分组,如何从 Dask DataFrameGroupBy 获取所有分组?

    python - Pandas 提取多列

    r - 使用多变量 xreg 进行 auto.arima 预测 - 意外结果

    r - 如何使用R中的QR分解计算最小二乘估计量的方差?

    Java:迭代 2 个列表的最佳/优雅方式

    sorting - 在 Haskell 中,如何对无限字符串列表进行排序?

    python - python 中的迭代二分搜索

    python - 通过分组分隔列中的数据