首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在r中分割分组二项分布数据

在r中分割分组二项分布数据
EN

Stack Overflow用户
提问于 2018-10-13 03:29:27
回答 3查看 308关注 0票数 2

我有这样的数据

代码语言:javascript
复制
samplesize <- 6

group <- c(1,2,3)
total <- rep(samplesize,length(group))
outcomeTrue <- c(2,1,3)

df <- data.frame(group,total,outcomeTrue)

希望我的数据看起来像这样

代码语言:javascript
复制
group2 <- c(rep(1,6),rep(2,6),rep(3,6))
outcomeTrue2 <- c(rep(1,2),rep(0,6-2),rep(1,1),rep(0,6-1),rep(1,3),rep(0,6-3))

df2 <- data.frame(group2,outcomeTrue2)

也就是说,我有二进制数据,其中我被告知全部观测和成功的观测,但我更希望将其组织为单个观测,其显式结果为0或1。即期望结果的可视化示例

在r中是否有一种简单的方法可以做到这一点,或者我需要自己编写一个循环来实现自动化呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-13 04:27:03

下面是tidyverrse的一个选项。我们使用“uncount”列展开行,按“组”分组,根据row_number()和“outcomeTrue”的值创建具有逻辑条件的二进制索引

代码语言:javascript
复制
library(tidyverse)
df %>% 
   uncount(total) %>% 
   group_by(group) %>%
   mutate(outcomeTrue = as.integer(row_number() <= outcomeTrue[1]))
# A tibble: 18 x 2
# Groups:   group [3]
#   group outcomeTrue
#   <dbl>       <int>
# 1     1           1
# 2     1           1
# 3     1           0
# 4     1           0
# 5     1           0
# 6     1           0
# 7     2           1
# 8     2           0
# 9     2           0
#10     2           0
#11     2           0
#12     2           0
#13     3           1
#14     3           1
#15     3           1
#16     3           0
#17     3           0
#18     3           0
票数 3
EN

Stack Overflow用户

发布于 2018-10-13 03:41:02

你也在那里。只需在x位置使用带有"[“函数的第2组变量:

代码语言:javascript
复制
df[ group2 , ]
    group total outcomeTrue
1       1     6           2
1.1     1     6           2
1.2     1     6           2
1.3     1     6           2
1.4     1     6           2
1.5     1     6           2
2       2     6           1
2.1     2     6           1
2.2     2     6           1
2.3     2     6           1
2.4     2     6           1
2.5     2     6           1
3       3     6           3
3.1     3     6           3
3.2     3     6           3
3.3     3     6           3
3.4     3     6           3
3.5     3     6           3

当与rowname匹配的数字或字符值放置在"[“的x位置时,它会复制整行。

票数 1
EN

Stack Overflow用户

发布于 2018-10-13 03:53:57

这是一个基本的R解。

代码语言:javascript
复制
do.call(rbind, lapply(split(df, df$group), function(x) data.frame(group2 = x$group, outcome2 = rep(c(1,0), times = c(x$outcome, x$total-x$outcome)))))

#     group2 outcome2
# 1.1      1        1
# 1.2      1        1
# 1.3      1        0
# 1.4      1        0
# 1.5      1        0
# 1.6      1        0
# 2.1      2        1
# 2.2      2        0
# 2.3      2        0
# 2.4      2        0
# 2.5      2        0
# 2.6      2        0
# 3.1      3        1
# 3.2      3        1
# 3.3      3        1
# 3.4      3        0
# 3.5      3        0
# 3.6      3        0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52789247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档