R - 根据第 3 列的统计信息,将 1 列的数据聚合到另一列

标签 r aggregate

假设我有一个包含 3 列的 R 数据框 一个 , C , 哪里一个 值(value)观并不都是不同的。

我如何获得 A 的所有值,即 B 最小的 C 值(对于 A 的那个值)?
类似于伪 SQL 代码:SELECT C WHERE B = MIN(B) GROUPBY A ?

我看过aggregate()功能,但我不确定它是否可以完成。
aggregate(B ~ A, data = mydataframe, min)只给我每个 A 的 B 的最小值,但是我不知道如何获得相应的 C 值。

有没有一种方法可以使用此聚合的结果对数据帧进行子集化以获得 C 值,和/或是否可以仅通过一次调用 aggregate() 来完成? ?

谢谢

我想得到的一个例子:

输入:

A   B   C
1   0   1
1   2   2
1   1   3
1   1   4
2   1   1
2   2   2
2   0   3
2   3   4

输出:
1
3

1 是对应于 A = 1 时 B (0) 最小值的 C 值

3 是对应于 A = 2 时 B (0) 的最小值的 C 值

最佳答案

您可以使用 data.table包裹:

library(data.table)
DT <- as.data.table(mydataframe)

DT[ , C[which.min(B)], by = "A"]
#    A V1
# 1: 1  1
# 2: 2  3

dplyr :
library(dplyr)
mydataframe %.%
  group_by(A) %.%
  summarise(res = C[which.min(B)])
#   A res
# 1 2   3
# 2 1   1

或者基函数by :
by(mydataframe, mydataframe$A, function(x) x$C[which.min(x$B)])
# mydataframe$A: 1
# [1] 1
# -------------------------------------------------------------------------------
# mydataframe$A: 2
# [1] 3

关于R - 根据第 3 列的统计信息,将 1 列的数据聚合到另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21880590/

相关文章:

r - block 茎的循环或功能

r - SVM奇怪的分类

mongodb - 如何在 mongodb $lookup 聚合中使用 NOT IN 数组条件

ios - 在 Xcode 中,如何在运行测试时不运行某些运行脚本构建阶段?

python使用默认函数聚合groupby

c++ - 如何实现 array::max_size()?

r - R汇总带日期列的data.frame

R ggplot2 : change colour of font and background in facet strip?

python - rpy2 中的 fitdistr

r - 如何将ggplot标题与窗口而不是绘图网格对齐?