[英]randomly reassign group membership with condition
我有下表:
姓名 | 團體 |
---|---|
一個 | 1 |
b | 1 |
c | 2 |
d | 2 |
e | 3 |
F | 3 |
並且我想通過(i)確保名稱不會分配給同一組,以及(ii)組成員身份的概率保持不變,來隨機重新分配組成員身份。 此外,我試圖 (iii) 避免將同一組下的所有名稱分配給同一個新組。 本質上,我想實現這樣的目標:
姓名 | 團體 | 新組 |
---|---|---|
一個 | 1 | 2 |
b | 1 | 3 |
c | 2 | 1 |
d | 2 | 3 |
e | 3 | 1 |
F | 3 | 2 |
如何在R
中執行此操作?
有了所有的限制,這幾乎不再是洗牌了:你可以使用模運算符。
df %>%
group_by(group) %>%
mutate(new_group = (2 + row_number() + group) %% 3 + 1)
name group new_group
<chr> <int> <dbl>
1 a 1 2
2 b 1 3
3 c 2 3
4 d 2 1
5 e 3 1
6 f 3 2
使用sample
+ setdiff
的基本 R 選項
transform(
df,
new.group = ave(group, group, FUN = function(x) sample(setdiff(group, x),length(x)))
)
給
name group new.group
1 a 1 2
2 b 1 3
3 c 2 1
4 d 2 3
5 e 3 1
6 f 3 2
> dput(df)
structure(list(name = c("a", "b", "c", "d", "e", "f"), group = c(1L,
1L, 2L, 2L, 3L, 3L)), class = "data.frame", row.names = c(NA,
-6L))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.