У меня есть датафрейм, где данные сгруппированы по идентификатору. Мне нужно знать, сколько клеток составляют 10% в каждой группе, чтобы выбрать это число в образце, но в этом образце следует выбрать ячейки, для которых EP равно 1.
Я пытался сделать вложенный цикл For: один для того, чтобы узнать количество ячеек, которые составляют 10% для каждой группы, и большее число для выборки этого числа, удовлетворяющее условию EP == 1
x <- data.frame("ID"=rep(1:2, each=10),"EP" = rep(0:1, times=10))
x
ID EP
1 1 0
2 1 1
3 1 0
4 1 1
5 1 0
6 1 1
7 1 0
8 1 1
9 1 0
10 1 1
11 2 0
12 2 1
13 2 0
14 2 1
15 2 0
16 2 1
17 2 0
18 2 1
19 2 0
20 2 1
for(j in 1:1000){
for (i in 1:nrow(x)){
d <- x[x$ID==i,]
npix <- 10*nrow(d)/100
}
r <- sample(d[d$EP==1,],npix)
print(r)
}
data frame with 0 columns and 0 rows
data frame with 0 columns and 0 rows
data frame with 0 columns and 0 rows
.
.
.
until 1000
Я хотел бы получить этот фрейм данных, где каждая выборка находится в новом столбце в x, а ячейка выборки имеет "1":
ID EP s1 s2....s1000
1 1 0 0 0 ....
2 1 1 0 1
3 1 0 0 0
4 1 1 0 0
5 1 0 0 0
6 1 1 0 0
7 1 0 0 0
8 1 1 0 0
9 1 0 0 0
10 1 1 1 0
11 2 0 0 0
12 2 1 0 0
13 2 0 0 0
14 2 1 0 1
15 2 0 0 0
16 2 1 0 0
17 2 0 0 0
18 2 1 1 0
19 2 0 0 0
20 2 1 0 0
см., Что каждый 1 в S1 и s2 является ячейками выборки и соответствует 10% ячеек в каждой группе (1, 2), которые удовлетворяют условию EP == 1