Вот пример данныхКак выбрать отдельные (случайные) строки, которые можно сгруппировать по значениям столбца?
p <- structure(list(name = structure(1:5, .Label = c("Alice", "Bob",
"Charlie", "Dennis", "Earl"), class = "factor"), cohort = structure(c(3L,
3L, 2L, 2L, 1L), .Label = c("X", "Y", "Z"), class = "factor"),
group = structure(c(1L, 1L, 2L, 2L, 1L), .Label = c("A",
"B"), class = "factor"), var = c(1L, 2L, 1L, 3L, 4L)), .Names = c("name",
"cohort", "group", "var"), class = "data.frame", row.names = c(NA,
-5L))
, который выглядит как
name cohort group var
1 Alice Z A 1
2 Bob Z A 2
3 Charlie Y B 1
4 Dennis Y B 3
5 Earl X A 4
и мне нужно что-то вроде следующего, на основе cohort
колонке. Мне нужно пробовать одну строку в каждом cohort
(возможно, случайно), так что у меня нет нескольких людей, принадлежащих к одному cohort
.
name cohort group var
2 Bob Z A 2
3 Charlie Y B 1
5 Earl X A 4
я могу group_by
когорты, но я не уверен, как действовать, чтобы создать новый фрейм данных с только строки, которые мне нужны.
Другая база r: 'idx = sapply (split (rownames (p), p $ когорт), образец, 1); p [idx,] ' – user20650