![](/img/trans.png)
[英]Calculate n-dimensional euclidean distance from group centroids for each sample and select the lowest 3 for each group in R
[英]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 |
我如何從中抽樣得到:
最簡單的方法可能是將 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.