簡體   English   中英

隨機排序組內的行

[英]Randomly sort rows within group

我有一個數據框(df1),它在給定組中有多次運行。 現在,我想在不改變數據框整體結構的情況下對給定組內的運行進行洗牌。 我的意思是第 1 列(組)應該保持不變,但第二列(運行)的順序應該在該組的行范圍內打亂。 所需結果在 df2 中給出。

df1 <- structure(list(Group = c("A", "A", "A", "B", "B", "B", "B", "B", 
"C", "C", "C", "C"), Run = c(1L, 2L, 3L, 1L, 2L, 3L, 4L, 5L, 
1L, 2L, 3L, 4L)), class = "data.frame", row.names = c(NA, -12L
))

df2 <- structure(list(Group = c("A", "A", "A", "B", "B", "B", "B", "B", 
"C", "C", "C", "C"), Run = c(1L, 3L, 2L, 2L, 1L, 3L, 4L, 5L, 
1L, 3L, 4L, 2L)), class = "data.frame", row.names = c(NA, -12L
))

非常感謝您的幫助。

您可以使用dplyr :您可以先使用group_by定義您的組,然后使用帶有mutate statememt 的sample

df1 %>%  group_by(Group) %>% mutate(Run=sample(Run))

這是使用ave + sample的基本 R 選項

transform(
  df1,
  Run = ave(Run, Group, FUN = sample)
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM