[英]Frequency counts with a "multiple selection" variable
我有一個包含三個變量的數據框:
對於“葯物”,問卷中可以進行多項選擇,因此現在數據框的每個單元格中有多個數字(用“;”分隔)。 是否可以創建一個頻率表來單獨計算每個數字(1-10)並按性別分組? 我需要在行中有“葯物”(1-10),並將按性別分組的計數作為列。
我已經嘗試拆分列,以便每個單元格只剩下一個值。 但是我仍然有計算多列中的值的問題。 對於到目前為止我嘗試過的每個函數,變量都是單獨計算的。
謝謝您的幫助!
對不起,我不知道如何用 dput 來做。<\/a> 這是截圖,希望對你有幫助!<\/a> (Geschlecht = 性別;Medikament = 葯物<\/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.