R 如何在另一列中使用席比例为i到i唯一值随机分配给列的值
我想给一列赋值1或0,其中1的数目是基于一个由另一列中的值确定的比例 例如,我有3个不同的组,每个组的比例值为:R 如何在另一列中使用席比例为i到i唯一值随机分配给列的值,r,R,我想给一列赋值1或0,其中1的数目是基于一个由另一列中的值确定的比例 例如,我有3个不同的组,每个组的比例值为: df<-data.frame(group=(rep(c("A","B","C"), 10))) prop.a<-0.2 prop.b<-0.3 prop.c<-0.1 数据如下所示: > df group Proportion 1 A 0 2 A 0 3 A
df<-data.frame(group=(rep(c("A","B","C"), 10)))
prop.a<-0.2
prop.b<-0.3
prop.c<-0.1
数据如下所示:
> df
group Proportion
1 A 0
2 A 0
3 A 1
4 A 0
5 A 0
6 A 0
7 A 1
8 A 0
9 A 0
10 A 0
11 B 1
12 B 1
13 B 0
14 B 0
15 B 0
16 B 0
17 B 0
18 B 0
19 B 1
20 B 0
21 C 0
22 C 0
23 C 0
24 C 0
25 C 0
26 C 0
27 C 1
28 C 0
29 C 0
30 C 0
任何帮助都会很好。谢谢,使用库
dplyr
,您可以尝试以下内容:
>table(df$group, df$Proportion)
0 1
A 8 2
B 7 3
C 9 1
df <- data.frame(group = rep(c("A","B","C"), 10), stringsAsFactors = FALSE)
prop <- list(A = 0.2, B = 0.3, C = 0.1)
library(dplyr)
df <- df %>%
group_by(group) %>%
mutate(proportion = c(rep(0, ceiling(n() * prop[[group[1]]])), rep(1, floor(n() * (1 - prop[[group[1]]])))))
table(df$group, df$proportion)
除了抓取分组变量向量的第一个值以索引到prop
列表中之外,您还可以使用unique
,如下所示:
0 1
A 2 8
B 3 7
C 1 9
df <- df %>%
group_by(group) %>%
mutate(proportion = c(rep(0, ceiling(n() * prop[[unique(group)]])), rep(1, floor(n() * (1 - prop[[unique(group)]])))))
df%
分组依据(分组)%>%
变异(比例=c(代表(0,上限(n()*道具[[独特(集团)]))),代表(1,地板(n()*(1-道具[[独特(集团)])))))))
谢谢您的帮助。有没有办法使其随机,这样它就不会只将0分配给任何一个组的第一个X?