У меня есть датафрейм...
df <- tibble(
id = 1:10,
family = c("a","a","b","b","c", "d", "e", "f", "g", "h")
)
Семьи будут состоять не более чем из 2 членов (поэтому они могут быть либо отдельными людьми, либо парами).
Для отдельных лиц (семей только с одной строкой, т. е. id = 5:10) я хочу создать столбец под названием «случайный», который случайным образом присваивает 50% записей как 1, а остальные как 0. Все остальные строки (принадлежащие семьи из 2 человек) также должны быть равны 0.
К концу данные должны выглядеть следующим образом (в зависимости от того, каким 50% строк присвоено значение 1)...
df <- tibble(
id = 1:10,
family = c("a","a","b","b","c", "d", "e", "f", "g", "h"),
random = c(0, 0, 0, 0, 1, 0, 1, 1, 0, 0)
)
Я в основном использую Tidyverse и хотел бы включить его в канал.
В настоящее время я пытаюсь что-то вроде...
df %>%
group_by(family) %>%
mutate(random = if(n() == 1) *not sure what goes here* else 0)