gpt4 book ai didi

r - 如何在使用 Dplyr 的 Group_by 和 Summarise_at 时将 na.rm=TRUE 与 n() 一起使用

转载 作者:行者123 更新时间:2023-12-02 04:27:37 24 4
gpt4 key购买 nike

library(tidyverse) 

我被困在一些本应如此简单的事情上!使用下面的代码,我想做的就是对三个“Var”列进行分组和总结。我想要计数和总和(这样我就可以创建三个百分比列,如果您可以在答案中包含一个简单的方法来完成此操作,那就太好了)。但是,我不想包括 NA。通过使用“na.rm=TRUE”从总和中删除 NA 很容易,但我似乎无法弄清楚如何在使用 dplyr::summarise_at 时不将 NA 包含在计数中(使用 n() )。

我错过了一些非常简单的事情吗?

Df%>%group_by(Group)%>%summarise_at(vars(Var1:Var3),funs(n(),sum((.),na.rm=TRUE)))

Group<-c("House","Condo","House","House","House","House","House","Condo")
Var1<-c(0,1,1,NA,1,1,1,0)
Var2<-c(1,1,1,1,0,1,1,1)
Var3<-c(1,1,1,NA,NA,1,1,0)

Df<-data.frame(Group,Var1,Var2,Var3)

最佳答案

我认为您的代码非常接近完成工作。我做了一些细微的更改,并提供了一个示例,说明如何在同一步骤中包含百分比计算(尽管我不确定您的预期输出)。

library(dplyr)
Df %>%
group_by(Group) %>%
summarise_all(funs(count = sum(!is.na(.)),
sum = sum(.,na.rm=TRUE),
pct = sum(.,na.rm=TRUE)/sum(!is.na(.))))

#> # A tibble: 2 x 10
#> Group Var1_count Var2_count Var3_count Var1_sum Var2_sum Var3_sum
#> <fctr> <int> <int> <int> <dbl> <dbl> <dbl>
#> 1 Condo 2 2 2 1 2 1
#> 2 House 5 6 4 4 5 4
#> # ... with 3 more variables: Var1_pct <dbl>, Var2_pct <dbl>,
#> # Var3_pct <dbl>

我也用过summarise_all而不是summarise_atsummarise_all适用于所有不属于 group 的变量变量。

关于r - 如何在使用 Dplyr 的 Group_by 和 Summarise_at 时将 na.rm=TRUE 与 n() 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46984004/

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