Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在另一列中使用席比例为i到i唯一值随机分配给列的值_R - Fatal编程技术网

R 如何在另一列中使用席比例为i到i唯一值随机分配给列的值

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

我想给一列赋值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          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?