如何计算非缺失值计数的平均值?
How to compute the mean of counts of non-missing values?
我想首先计算数据框特定列的非缺失值的组数,然后计算其平均值。基本上我想要有关非缺失值(单个值)的组计数平均值的信息。
我设法计算了非缺失值的组计数,但不是其平均值(单个值)。下面的代码没有问题,除了最后一行(我注释掉了它,因为它给了我错误的输出)。
data <- tibble(hosp = c("1", "1", "1", "1", "1", "1", "1", "2", "2", "2", "2", "2", "2", "2", "3", "3", "3", "3", "3"),
from = c("A", "A", "B", "B", "C", "C", "C", "A", "A", "B", "B", "D", "D", "D", "B", "E", "E", "E", "E"),
to = c("C", "B", "C", "A", "B", "A", "B", "D", "B", "A", "D", "A", "B", "B", "E", "B", "B", "B", "B"),
hosp_ind = c("" , "3", "" , "" , "2", "2", "3", "" , "3", "" , "" , "1", "1", "3", "" , "1", "1", "2", "2"),
to_ind = c("" , "E", "" , "" , "D", "D", "E", "" , "E", "" , "" , "C", "C", "E", "" , "A", "C", "A", "D"))
summary <- data %>%
group_by(hosp, from, to) %>%
summarise(N_iv = sum(!is.na(to_ind))) %>%
#summarise(mean(N_iv))
我猜你想做的就是那个。
你必须在 summarise
之前 ungroup
:
(
data
%>% group_by(hosp, from, to)
%>% mutate(
hosp_ind = na_if(hosp_ind, ""),
to_ind = na_if(to_ind, "") )
%>% summarise(
N_iv = sum(!is.na(to_ind)))
%>% ungroup
%>% summarise(mean(N_iv))
)
输出:
# A tibble: 1 x 1
`mean(N_iv)`
<dbl>
1 0.857
请注意,空字符串 ""
与 NA
不同。这就是我添加这些行的原因:
%>% mutate(
hosp_ind = na_if(hosp_ind, ""),
to_ind = na_if(to_ind, "") )
另一种方法是 pull
列 N_iv
计算其平均值:
(
data
%>% group_by(hosp, from, to)
%>% mutate(
hosp_ind = na_if(hosp_ind, ""),
to_ind = na_if(to_ind, "") )
%>% summarise(
N_iv = sum(!is.na(to_ind)))
%>% pull(N_iv)
%>% mean
)
我想首先计算数据框特定列的非缺失值的组数,然后计算其平均值。基本上我想要有关非缺失值(单个值)的组计数平均值的信息。
我设法计算了非缺失值的组计数,但不是其平均值(单个值)。下面的代码没有问题,除了最后一行(我注释掉了它,因为它给了我错误的输出)。
data <- tibble(hosp = c("1", "1", "1", "1", "1", "1", "1", "2", "2", "2", "2", "2", "2", "2", "3", "3", "3", "3", "3"),
from = c("A", "A", "B", "B", "C", "C", "C", "A", "A", "B", "B", "D", "D", "D", "B", "E", "E", "E", "E"),
to = c("C", "B", "C", "A", "B", "A", "B", "D", "B", "A", "D", "A", "B", "B", "E", "B", "B", "B", "B"),
hosp_ind = c("" , "3", "" , "" , "2", "2", "3", "" , "3", "" , "" , "1", "1", "3", "" , "1", "1", "2", "2"),
to_ind = c("" , "E", "" , "" , "D", "D", "E", "" , "E", "" , "" , "C", "C", "E", "" , "A", "C", "A", "D"))
summary <- data %>%
group_by(hosp, from, to) %>%
summarise(N_iv = sum(!is.na(to_ind))) %>%
#summarise(mean(N_iv))
我猜你想做的就是那个。
你必须在 summarise
之前 ungroup
:
(
data
%>% group_by(hosp, from, to)
%>% mutate(
hosp_ind = na_if(hosp_ind, ""),
to_ind = na_if(to_ind, "") )
%>% summarise(
N_iv = sum(!is.na(to_ind)))
%>% ungroup
%>% summarise(mean(N_iv))
)
输出:
# A tibble: 1 x 1
`mean(N_iv)`
<dbl>
1 0.857
请注意,空字符串 ""
与 NA
不同。这就是我添加这些行的原因:
%>% mutate(
hosp_ind = na_if(hosp_ind, ""),
to_ind = na_if(to_ind, "") )
另一种方法是 pull
列 N_iv
计算其平均值:
(
data
%>% group_by(hosp, from, to)
%>% mutate(
hosp_ind = na_if(hosp_ind, ""),
to_ind = na_if(to_ind, "") )
%>% summarise(
N_iv = sum(!is.na(to_ind)))
%>% pull(N_iv)
%>% mean
)