私はデータフレームを持っています...
df <- tibble(
id = 1:7,
family = c("a","a","b","b","c", "d", "e")
)
ファミリには、最大で 2 つのメンバーしか含まれません (つまり、個人またはペアのいずれかです)。
メンバーが 1 つしかないファミリー (例: c、d、e) に番号 1 を割り当て、2 つのメンバー (例では a と b) を含むファミリーに 0 または 1 をランダムに割り当てる新しい列「random」が必要です。
最終的に、データは次のようになります (0/1 のランダムな割り当てによって異なります)...
df <- tibble(
id = 1:7,
family = c("a","a","b","b","c", "d", "e"),
random = c(1, 0, 0, 1, 1, 1, 1)
)
私は主に Tidyverse を使用しているので、group_by と mutate の組み合わせでこれを実行できるようにしたいと考えています。
私は次のことを試しました(ただし、これは家族内でランダムに0/1を割り当てませんでした)...
df %>%
group_by(family) %>%
mutate(
random = if_else(
condition = n() == 1,
true = 1,
false = as.double(sample(0:1,1,replace = T))
)