簡體   English   中英

如何從 R 中的交叉表(或 n 維數組中的 dimname 組)中采樣 rowname-colname 對?

[英]How to sample rowname-colname pairs from a crosstab (or dimname groups from an n-dimensional array) in R?

在 R 中,將 n 維數組“折疊”為一維列向量並使用 sample() function 在基數 R 中對其進行采樣是非常簡單的。

但是,我想根據頻率對 dimnames-groups(即 rowname-colname 對,在二維數組的情況下)進行采樣。

讓我們舉個例子,假設我們有以下交叉表(數據 (n=70) 是隨機生成的):

掌管 女士
抽煙 10 20
禁止吸煙 15 25

我如何從中抽樣得到:

  • “吸煙者”概率:10 / 70
  • “非吸煙者”概率:15 / 70
  • “吸煙的女人”概率:20 / 70
  • “禁煙女人”概率:25 / 70

最簡單的方法可能是將 dimnames 分組(以某種方式),並將其用作示例 function 的第一個參數,即:

sample(x = vectorOfGroupedDimnames, size = 1, prob = c(crosstabAsMatrix))

是的,我知道變量 vectorOfGroupedDimnames 可以使用嵌套的 for 循環形成,但必須有更優雅的方法來實現。

那么最簡單的方法是什么? 謝謝。

Maybe this will help you

library(dplyr)

data <-
  structure(c(25L, 20L, 15L, 10L), .Dim = c(2L, 2L), .Dimnames = list(
    smoke = c("Non-smoking", "Smoking"), sex = c("Female", "Male"
    )), class = "table")

data %>% 
  as_tibble() %>% 
  sample_n(size = 1,weight = n,replace = TRUE)

暫無
暫無

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

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