仅对包含分类级别的变量使用“tidyverse”获取使用和响应的平均值
Posted
技术标签:
【中文标题】仅对包含分类级别的变量使用“tidyverse”获取使用和响应的平均值【英文标题】:get averages of use and response with 'tidyverse' only for variables containing categorical levels 【发布时间】:2021-08-08 02:59:19 【问题描述】:我想得到:
-
按实践名称划分的平均门户使用率
按实践名称划分的平均响应率
当我有分类变量时,我对如何得到这个有点困惑。我只想通过 'tidyverse' 库来实现这一点。
这是我拥有的数据示例:
A tibble: 17 x 2
practice_name portal_use
<chr> <chr>
1 il Yes
2 il Yes
3 il No
4 il NA
5 ol Yes
6 ol Yes
7 ol No
8 ol No
9 ol NA
10 ol NA
11 al Yes
12 al Yes
13 al Yes
14 al No
15 al NA
16 al NA
17 al NA
使用 dput 我的数据看起来像:
structure(list(practice_name = c("il", "il", "il", "il", "ol",
"ol", "ol", "ol", "ol", "ol", "al", "al", "al", "al", "al", "al",
"al"), portal_use = c("Yes", "Yes", "No", NA, "Yes", "Yes", "No",
"No", NA, NA, "Yes", "Yes", "Yes", "No", NA, NA, NA)), row.names = c(NA,
-17L), class = c("tbl_df", "tbl", "data.frame"))
【问题讨论】:
【参考方案1】:也许这有帮助
library(dplyr)
library(tidyr)
df1 %>%
pivot_longer(cols = everything()) %>%
count(name, value) %>%
group_by(name) %>%
mutate(n = n/sum(n))
【讨论】:
以上是百分比——但我需要每个练习名称的使用平均值——这意味着回答“是”的人的平均值。其次,我需要门户使用的平均响应 - 记住我有 NA @GaB 我不确定你的期望是什么。【参考方案2】:你想要这个吗?
> table(df)
portal_use
practice_name No Yes
al 1 3
il 1 2
ol 2 2
或
> prop.table(table(df))
portal_use
practice_name No Yes
al 0.09090909 0.27272727
il 0.09090909 0.18181818
ol 0.18181818 0.18181818
【讨论】:
这些是百分比还是平均值?这些似乎是百分比。 @GaB 是百分比。你想要什么平均值?你能显示预期的输出吗?以上是关于仅对包含分类级别的变量使用“tidyverse”获取使用和响应的平均值的主要内容,如果未能解决你的问题,请参考以下文章
仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但获得了“Int64Index”实例