gpt4 book ai didi

r - r 中两个分类列条件的子集

转载 作者:行者123 更新时间:2023-12-01 13:09:49 25 4
gpt4 key购买 nike

我想根据两个分类列的条件从一个连续列中提取值。

> df.example <- data.frame(V1 = c("A", "A", "A", "B", "B", "B", "A", "A", "B", "B"),
+ V2 = c("B", "A", "B", "A", "B", "A", "B", "A", "B", "A"),
+ V3 = c("5", "3", "1", "7", "11", "2", "2", "11", "1", "3"))
> df.example
V1 V2 V3
1 A B 5
2 A A 3
3 A B 1
4 B A 7
5 B B 11
6 B A 2
7 A B 2
8 A A 11
9 B B 1
10 B A 3

我想从 df.example 中检索那些 V3 最大的行,对于 V1=V2 的每个唯一组合;这里

5   B  B 11
8 A A 11

以及当V1=/V2时每个唯一组合的最小值;这里

3    A  B  1
10 B A 3

这当然是简化的,在我的数据框中,V1 和 V2 中有 100 多个类别。

最佳答案

这是一个 data.table 方法。

library(data.table)
setDT(df.example)
#In supplied data, V3 is a character vector
df.example[,V3 := as.numeric(as.matrix(V3))]
df.example[,lapply(.SD,function(x){
if(V1==V2)
{max(V3)}
else
{min(V3)}})
,by=list(V1,V2)]
V1 V2 V3
1: A B 1
2: A A 11
3: B A 2
4: B B 11

关于r - r 中两个分类列条件的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60816616/

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