r中连接多个数据集数据的编程模式



我正在做一个练习,要求我比较普通分布和混合分布的分布。其中一项任务是比较它们的均值和标准差。为了展示我的简单发现,我想使用一个表来提供每个分布的汇总统计信息。以下是我创建的内容(我还包括它来自的数据)


set.seed(300)
binom_guid_obs = rbinom(n = 1000, size = 10, prob = 0.8) # binomial random variable
binom_guid_tbl = data.frame( "success" = binom_guid_obs)
probs_frm_beta = rbeta(n = 1000, shape1 = 4, shape2 = 1)
binom_beta_params_obs = rbinom(n = 1000, size = 10, prob = probs_frm_beta)
binom_beta_params_tbl = data.frame("success" = binom_beta_params_obs)
#beta-binomial random variable
plain_binom_summ_stats = binom_guid_tbl %>% summarise("mean" = mean(success), "sd" = sd(success))
binom_beta_params_summ_stats = binom_beta_params_tbl %>%  summarise("mean" = mean(success), "sd" = sd(success))
binded_rows_plain_beta_binom = bind_rows(plain_binom_summ_stats, binom_beta_params_summ_stats)
binded_rows_plain_beta_binom = binded_rows_plain_beta_binom %>% mutate("name" = c("plain_binom", "binom_beta")) %>% select(name, 1:2)

可以看到,我成功地创建了表,但是我觉得我必须做很多不必要的工作来显示表。特别是,问题在于是否能够为"名称"创建一列。这两个数据集。有没有一种更简单、更清晰的编程模式,我可以在这样的场景中使用,而不是那么"笨拙"?是现在的那个吗?看起来肯定应该有,因为我没有做任何不寻常的事情。只是比较发行版。

试试这个

library(dplyr , warn.conflicts = F)
set.seed(300)
binom_guid_obs = rbinom(n = 1000, size = 10, prob = 0.8) # binomial random variable
probs_frm_beta = rbeta(n = 1000, shape1 = 4, shape2 = 1)
binom_beta_params_obs = rbinom(n = 1000, size = 10, prob = probs_frm_beta) 
df <- data.frame(bisuccess = binom_guid_obs , bbsuccess = binom_beta_params_obs)
df %>% summarise(mean = c(mean(bisuccess) , mean(bbsuccess)) ,
sd = c(sd(bisuccess) , sd(bbsuccess))) -> df
rownames(df) <- c("plain_binom" , "binom_beta")
df
#>              mean       sd
#> plain_binom 7.963 1.298968
#> binom_beta  8.131 1.976802

In baseR

x <- c(binom_guid_obs , binom_beta_params_obs)
y <- gl(2 , 1000 , labels = c("plain_binom" , "binom_beta"))
df <- cbind(tapply(x , y , mean) , tapply(x , y , sd))
colnames(df) <- c("mean" , "sd")
df

由reprex包(v2.0.1)创建于2022-06-14

最新更新