gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:19:12 25 4
gpt4 key购买 nike

假设我有一个包含 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com