p.a) "B dominant" else "tie"} , -6ren">
gpt4 book ai didi

r - 在 data.frame 中找到最高比例

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

我有一个如下所示的数据框:

x <- data.frame(sector=rep(1:5, each=2),
subspecies=rep(c("Type A", "Type B"), 5),
proportion= c(.2, 1-.2, .3, 1-.3, .4,
1-.4, .5, 1-.5, .6, 1-.6))

x$dominance <- NA

x[,1] <- sort(x[,1])

x
sector subspecies proportion dominance
1 1 Type A 0.2 NA
2 1 Type B 0.8 NA
3 2 Type A 0.3 NA
4 2 Type B 0.7 NA
5 3 Type A 0.4 NA
6 3 Type B 0.6 NA
7 4 Type A 0.5 NA
8 4 Type B 0.5 NA
9 5 Type A 0.6 NA
10 5 Type B 0.4 NA

在1-5的每个扇区中,如果A型比例最高,那么我需要在'dominance'列中添加'A dominant',或者如果B型比例最高,那么我需要添加'B显性”到“支配”列。如果有平局,我需要在“优势”列中添加“平局”。

这应该是输出数据框:

x$dominance <- c("B dominant", "B dominant", "B dominant", "B dominant", "B dominant", 
"B dominant", "tie", "tie", "A dominant", "A dominant")
x
sector subspecies proportion dominance
1 1 Type A 0.2 B dominant
2 1 Type B 0.8 B dominant
3 2 Type A 0.3 B dominant
4 2 Type B 0.7 B dominant
5 3 Type A 0.4 B dominant
6 3 Type B 0.6 B dominant
7 4 Type A 0.5 tie
8 4 Type B 0.5 tie
9 5 Type A 0.6 A dominant
10 5 Type B 0.4 A dominant

最佳答案

 library(data.table)
DT <- data.table(x)

DT[, dominance := {p.a <- proportion[subspecies =="Type A"]
p.b <- proportion[subspecies =="Type B"]
if (p.a > p.b) "A dominant" else if (p.b > p.a) "B dominant" else "tie"}
, by=sector]


sector subspecies proportion dominance
1: 1 Type A 0.2 B dominant
2: 1 Type B 0.8 B dominant
3: 2 Type A 0.3 B dominant
4: 2 Type B 0.7 B dominant
5: 3 Type A 0.4 B dominant
6: 3 Type B 0.6 B dominant
7: 4 Type A 0.5 tie
8: 4 Type B 0.5 tie
9: 5 Type A 0.6 A dominant
10: 5 Type B 0.4 A dominant

关于r - 在 data.frame 中找到最高比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16547316/

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