gpt4 book ai didi

r - 在 R 函数中使用变量作为参数

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

我想为非常重复的 Action 编写一个函数。数据看起来像这样

id<-c(100,104,999,225,350,450)
sex<-c('female','male','male','female','male','male')
race<-c('black','white','white','white','black','white')
class<-c('a','a','c','b','c','b')
adur<-c(3,3,15,3,3,59)
bdur<-c(2,59,26,59,2,14)
cdur<-c(1,59,59,59,59,1)
ae<-c(1,1,1,1,1,0)
be<-c(1,0,1,0,1,1)
ce<-c(1,0,0,0,1,1)

mydata<-data.frame(id,sex,race,class,adur,bdur,cdur,ae,be,ce)

id sex race class adur bdur cdur ae be ce
1 100 female black a 3 2 1 1 1 1
2 104 male white a 3 59 59 1 0 0
3 999 male white c 15 26 59 1 1 0
4 225 female white b 3 59 59 1 0 0
5 350 male black c 3 2 59 1 1 1
6 450 male white b 59 14 1 0 1 1

我想按不同的变量(性别、种族、类(Class))分组并进行一些计算。这是我的尝试。

stp_f<-function(ivar,idur,ie){
x<-mydata %>% group_by(ivar) %>% summarise(sumdur=sum(idur),
sumev=sum(ie),
failrate=sumev/sumdur) %>%
rename(var=ivar)
}

stp_f(sex,adur,ae)
stp_f(sex,bdur,be)
stp_f(sex,cdur,ce)

它不起作用,因为我认为 R 不会以这种方式读取变量。有人建议我放弃 tidyverse 并改用 data.table,但由于我不熟悉 data.table 语法,我发现很难全神贯注。有人可以在 data.table 中详细解释这一点或对此函数使用 dplyr 语法吗?

最佳答案

使用 tidyverse:

stp_f<-function(ivar,idur,ie){
x <- mydata %>%
group_by(get(ivar)) %>%
summarise(
sumdur = sum(get(idur)),
sumev = sum(get(ie)),
failrate = sumev / sumdur
) %>%
rename(var = `get(ivar)`)

x
}

stp_f("sex","adur","ae")
stp_f("sex","bdur","be")
stp_f("sex","cdur","ce")

输出:

> stp_f("sex","adur","ae")
# A tibble: 2 x 4
var sumdur sumev failrate
<chr> <dbl> <dbl> <dbl>
1 female 6 2 0.333
2 male 80 3 0.0375


> stp_f("sex","bdur","be")
# A tibble: 2 x 4
var sumdur sumev failrate
<chr> <dbl> <dbl> <dbl>
1 female 61 1 0.0164
2 male 101 3 0.0297


> stp_f("sex","cdur","ce")
# A tibble: 2 x 4
var sumdur sumev failrate
<chr> <dbl> <dbl> <dbl>
1 female 60 1 0.0167
2 male 178 2 0.0112

关于r - 在 R 函数中使用变量作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69912879/

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