gpt4 book ai didi

r - 根据多行值计算新列

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

我有一个 data.frame看起来像这样:

Name  Age Gender Team  
John 18 M A
Luke 75 M B
Dean 20 M C
Zoe 34 F B
Chloe 12 F B
Erik 56 M A

我想计算一个新值( TeamType ),该值对团队的所有成员都相同,但取决于团队中的人员。
例如,B 队同时拥有 MF在团队中会有 TeamType=Mixed而C队和A队将是 OnlyM , 像这样:
Name  Age Gender Team TeamType
John 18 M A OnlyM
Luke 75 M B Mixed
Dean 20 M C OnlyM
Zoe 34 F B Mixed
Chloe 12 F B Mixed
Erik 56 M A OnlyM

这在 Python 或许多其他传统语言中很容易做到,但我不知道如何在 R 中做到这一点。

最佳答案

我们可以使用 data.table .我们将“data.frame”转换为“data.table”( setDT(df1) ),按“团队”分组,if 'Gender' 的唯一元素的长度大于 1 ( uniqueN(Gender)>1 ) 我们将其称为 'Mixed' 或 else我们paste字符串 'Only' 与 'Gender' 的第一个元素(或 unique 'Gender' 元素)。请注意,如果“团队”只有“F”,则将给出“OnlyF”。

library(data.table)#v1.9.6+
setDT(df1)[, TeamType:=if(uniqueN(Gender)>1) 'Mixed'
else paste0('Only',Gender[1L]) , by=Team]
df1
# Name Age Gender Team TeamType
#1: John 18 M A OnlyM
#2: Luke 75 M B Mixed
#3: Dean 20 M C OnlyM
#4: Zoe 34 F B Mixed
#5: Chloe 12 F B Mixed
#6: Erik 56 M A OnlyM

关于r - 根据多行值计算新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33055445/

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