簡體   English   中英

"使用“多項選擇”變量進行頻率計數"

[英]Frequency counts with a "multiple selection" variable

我有一個包含三個變量的數據框:

  1. ID<\/li>
  2. 性別(男、女、女)<\/li>
  3. 葯物 (1,2,3,4,5,6,7,8,9,10)<\/li><\/ol>

    對於“葯物”,問卷中可以進行多項選擇,因此現在數據框的每個單元格中有多個數字(用“;”分隔)。 是否可以創建一個頻率表來單獨計算每個數字(1-10)並按性別分組? 我需要在行中有“葯物”(1-10),並將按性別分組的計數作為列。

    我已經嘗試拆分列,以便每個單元格只剩下一個值。 但是我仍然有計算多列中的值的問題。 對於到目前為止我嘗試過的每個函數,變量都是單獨計算的。

    謝謝您的幫助!

    對不起,我不知道如何用 dput 來做。<\/a> 這是截圖,希望對你有幫助!<\/a> (Geschlecht = 性別;Medikament = 葯物<\/a>

    這是預期的輸出,但沒有像“01;03”這樣的組合<\/a>

如果沒有特定的、可重現的示例,這樣的文本解析可能會很困難。 但是,聽起來您的數據框看起來像這樣:

df
#>    ID medication gender
#> 1   1          9      f
#> 2   2      2;1;3      m
#> 3   3        6;2      d
#> 4   4          3      f
#> 5   5    7;8;7;1      f
#> 6   6    6;9;4;6      m
#> 7   7          9      d
#> 8   8      8;6;3      f
#> 9   9        9;7      d
#> 10 10        8;6      m

在這種情況下,在基數 R 中獲得結果的行人方式將是這樣的:

meds <- lapply(split(df, df$gender), 
               function(x) unlist(strsplit(x$medication, ";\\s?")))

genders <- rep(c("d", "f", "m"), times = lengths(meds))

table(gender = genders, medication = unlist(meds))
#>       medication
#> gender 1 2 3 4 5 6 7 8 9 10
#>      d 0 1 0 0 0 1 1 0 2  0
#>      f 1 0 2 0 0 1 2 2 1  0
#>      m 1 1 1 1 0 3 0 1 1  0

可重現的數據

set.seed(2)

medication <- sapply(rpois(10, 2), function(x) {
  if(x == 0) x <- 1
  x <- sample(1:10, x, TRUE)
  paste(x, collapse = ";")
})

gender <- sample(c("m", "f", "d"), 10, TRUE, prob = c(2, 2, 1))

df <- data.frame(ID = 1:10, medication = medication, gender = gender)

reprex 包於 2022-02-06 創建 (v2.0.1)

暫無
暫無

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

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