gpt4 book ai didi

r - 根据循环中的一个标准在变量之间建立比率并保留多个变量

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

我有一个数据框,一年中每个季节都有 3 个诱捕 session ,持续 3 年(真实数据库有 100 多个季节和 800 个诱捕季节)。对于每个诱捕季节,我有 3 个二项式变量(“Non_Breeder”、“Potential_Breeder”和“Breeding”)。

# example    
Year <- c(rep(2000,12), rep(2001,12), rep(2002,12))
Season <- c(rep (seq(1:4), each=3,3))
Trap_Session <- seq(1:36)
Non_Breeder <- (rbinom(36, 1, prob=0.5))
Potential_Breeder <- (rbinom(36, 1, prob=0.8))
Breeding <- (rbinom(36, 1, prob=0.4))
Month <- sample(12, 36, replace = TRUE)
db <- cbind (Year, Season, Trap_Session, Non_Breeder, Potential_Breeder, Breeding)
db <- as.data.frame (db)

我想计算每个季节的“(Potential_Breeder + Breeding)/(Non_Breeder + Potential_Breeder + Breeding)”,保持变量“Year”、“Season”和“Ratio”。

我尝试过使用函数table,但我不知道如何自动为每个季节制作一个循环并保留变量“Year”、“Season”和“Ratio”。

例如:如果我有以下数据:

   Year Season Trap_Session Non_Breeder Potential_Breeder Breeding 
1 2000 1 1 1 1 0
2 2000 1 2 1 1 0
3 2000 1 3 0 1 0
4 2000 2 4 0 1 1
5 2000 2 5 1 1 1
6 2000 2 6 1 1 1

我想得到:

Year Season Ratio
2000 1 0.6 # (3/5)
2000 2 0.75 # (6/8)

#Explanation of the calculation
# 2000 Season 1
(3 Potential_Breeder / 5 (3Potential_Breeder+2 Non_Breeder)
# 2000 Season 2
(3Potential_Breeder + 2Breeding / 2Non_Breeder + 3Potential_Breeder +2Breeding)

有人知道怎么做吗?

最佳答案

试试这个:

library(data.table)
setDT(db)[ , .("Ratio" = sum(Potential_Breeder, Breeding) /
sum(Non_Breeder, Potential_Breeder, Breeding)), by = .(Year, Season)]

这会将一个名为“Ratio”(随意命名)的变量添加到您现有的按年份和季节分组的数据中,

与 dplyr 相同:

library(dplyr)
group_by(db, Year, Season) %>% summarise("Ratio" = sum(Potential_Breeder, Breeding) /
sum(Non_Breeder, Potential_Breeder, Breeding))

给定 OP 中的数据库,两者都给出以下输出:

    Year Season     Ratio
1: 2000 1 0.8000000
2: 2000 2 0.5000000
3: 2000 3 0.6000000
4: 2000 4 0.8000000
5: 2001 1 0.6666667
6: 2001 2 0.8000000
7: 2001 3 0.8000000
8: 2001 4 0.6000000
9: 2002 1 1.0000000
10: 2002 2 0.5000000
11: 2002 3 0.8571429
12: 2002 4 0.6666667

关于r - 根据循环中的一个标准在变量之间建立比率并保留多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30392707/

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