gpt4 book ai didi

r - 我应该如何使用数据库中的先前列来创建新变量

转载 作者:行者123 更新时间:2023-12-01 16:39:58 27 4
gpt4 key购买 nike

我有一个数据库,其中包含年龄年份出生顺序1出生顺序2奇偶校验0奇偶校验1'。对于每个订单,我都有一个出生顺序列,直到 8,还有胎次列,直到 7。我需要划分Birth Order 1/Parity 0出生顺序 2/胎次 1 ...以及更多信息来估算我的费率。

这是我的数据库,只是一个示例。

year <- c(1998, 1999, 2000, 2010)  
Age <- c(15, 16, 17, 18)
'Birth Order 1' <- c(10, 25, 25, 35)
'Parity 0' <- c(100, 150, 140, 150)
'Birth Order 2' <- c(5, 10, 10, 30)
'Parity 1' <- c(110, 160, 150, 150)

mat <- data.frame(year, Age, `Birth Order 1`, `Birth Order 2`, `Parity 0`, `Parity 1`)

我使用简单的代码完成了此操作,但我想使用命令来优化我的脚本。

mat <- mat %>% 
mutate(mat1 = `Birth Order 1`/`Parity 0`,
mat2 = `Birth Order 2`/`Parity 1`,
mat3 = `Birth Order 3`/`Parity 2`,
mat4 = `Birth Order 4`/`Parity 3`,
mat5 = `Birth Order 5`/`Parity 4`,
mat6 = `Birth Order 6`/`Parity 5`) %>%
select("AGE", "year", starts_with("mat"))

我的预期结果是:

year    Age mat1              mat2
1998 15 0.1 0.04545455
1999 16 0.1666667 0.0625
2000 17 0.1785714 0.06666667
2010 18 0.2333333 0.2

最佳答案

一个相当简单的解决方案:


year <- c(1998, 1999, 2000, 2010)
Age <- c(15, 16, 17, 18)
'Birth Order 1' <- c(10, 25, 25, 35)
'Parity 0' <- c(100, 150, 140, 150)
'Birth Order 2' <- c(5, 10, 10, 30)
'Parity 1' <- c(110, 160, 150, 150)

mat <- data.frame(year, Age, `Birth Order 1`, `Birth Order 2`, `Parity 0`, `Parity 1`)

for(i in 1:2){
mat[[paste0("mat",i)]] <- mat[[paste0("Birth.Order.",i)]]/mat[[paste0("Parity.",i-1)]]
}

mat

# year Age Birth.Order.1 Birth.Order.2 Parity.0 Parity.1 mat1 mat2
#1 1998 15 10 5 100 110 0.1000000 0.04545455
#2 1999 16 25 10 150 160 0.1666667 0.06250000
#3 2000 17 25 10 140 150 0.1785714 0.06666667
#4 2010 18 35 30 150 150 0.2333333 0.20000000

关于r - 我应该如何使用数据库中的先前列来创建新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57102962/

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