簡體   English   中英

使用R代碼通過從每種組合中隨機選擇一行來重組數據幀

[英]Using R code to reorganize data frame by randomly selecting one row from each combination

我有一個看起來像這樣的數據框:

Subject  N   S
Sub1-1   3   1
Sub1-2   3   1
Sub1-3   3   1
Sub1-4   3   1
Sub2-1   3   1
Sub2-2   3   1
Sub2-3   3   1
Sub2-4   3   1
Sub3-1   3   2
Sub3-2   3   2
Sub3-3   3   2
Sub4-1   3   2
Sub4-2   3   2
Sub4-3   3   2
Sub5-1   3   2
Sub5-2   3   2
Sub6-1   1   1
Sub6-2   1   1
Sub6-3   1   1
Sub7-1   1   1
Sub7-2   1   1
Sub7-3   1   1
Sub8-1   1   1
Sub8-2   1   1
Sub8-3   1   2
Sub9-1   1   2
Sub9-2   1   2
Sub1-1   1   2
Sub1-2   1   2
Sub1-3   1   2
Sub5-1   1   2
Sub5-2   1   2
Sub1-5   2   1
Sub1-6   2   1
Sub1-7   2   1
Sub1-5   2   1
Sub2-6   2   1
Sub2-5   2   1
Sub2-6   2   1
Sub2-7   2   1
Sub3-8   2   2
Sub3-5   2   2
Sub3-6   2   2
Sub4-7   2   2
Sub4-5   2   2
Sub4-6   2   2
Sub5-7   2   2
Sub5-8   2   2

如您所見,此數據框中的N和S列有6種不同的組合,每種組合有8個連續的行。 我想創建一個新的數據框,其中從每個組合(3和1或1和2)中隨機選擇一行,然后放入一個新的數據框,以便每個不同組合有8個連續的行。 這樣,所有48行的整個數據幀都將完全重組。 R代碼有可能嗎?

編輯:所需的輸出將是這樣的,但是重復直到所有48行都已滿並且每行的主題號將是隨機的,因為它是每個N&S組合的隨機選擇的行。

Subject  N   S
         3   1
         1   1
         3   2
         1   2
         2   2
         2   1
         2   2
         3   2
         2   1
         1   1
         3   1
         1   2

使用dplyr函數的解決方案。

# Load package 
library(dplyr)

# Set seed for reproducibility
set.seed(123)

# Process the data
dt2 <- dt %>%
  group_by(N, S) %>%
  sample_n(size = 1)

# View the result
dt2

## A tibble: 6 x 3
## Groups:   N, S [6]
#  Subject     N     S
#    <chr> <int> <int>
#1  Sub6-3     1     1
#2  Sub5-1     1     2
#3  Sub1-5     2     1
#4  Sub5-8     2     2
#5  Sub2-4     3     1
#6  Sub3-1     3     2

更新:重新組織行

以下將所有行隨機化。

dt3 <- dt %>% slice(sample(1:n(), n()))

資料准備

dt <- read.table(text = "Subject  N   S
Sub1-1   3   1
                 Sub1-2   3   1
                 Sub1-3   3   1
                 Sub1-4   3   1
                 Sub2-1   3   1
                 Sub2-2   3   1
                 Sub2-3   3   1
                 Sub2-4   3   1
                 Sub3-1   3   2
                 Sub3-2   3   2
                 Sub3-3   3   2
                 Sub4-1   3   2
                 Sub4-2   3   2
                 Sub4-3   3   2
                 Sub5-1   3   2
                 Sub5-2   3   2
                 Sub6-1   1   1
                 Sub6-2   1   1
                 Sub6-3   1   1
                 Sub7-1   1   1
                 Sub7-2   1   1
                 Sub7-3   1   1
                 Sub8-1   1   1
                 Sub8-2   1   1
                 Sub8-3   1   2
                 Sub9-1   1   2
                 Sub9-2   1   2
                 Sub1-1   1   2
                 Sub1-2   1   2
                 Sub1-3   1   2
                 Sub5-1   1   2
                 Sub5-2   1   2
                 Sub1-5   2   1
                 Sub1-6   2   1
                 Sub1-7   2   1
                 Sub1-5   2   1
                 Sub2-6   2   1
                 Sub2-5   2   1
                 Sub2-6   2   1
                 Sub2-7   2   1
                 Sub3-8   2   2
                 Sub3-5   2   2
                 Sub3-6   2   2
                 Sub4-7   2   2
                 Sub4-5   2   2
                 Sub4-6   2   2
                 Sub5-7   2   2
                 Sub5-8   2   2",
                 header = TRUE, stringsAsFactors = FALSE)

暫無
暫無

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

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