次のサンプルデータフレームでは、「コホート」の各レベルからIDの「ID」の層別ランダムサンプル(例:40% :私は使用して行の乱数を描画する方法を知っているR:グループ化変数による一意のIDの層別ランダムサンプル割合
data<-structure(list(Cohort = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), ID = structure(1:20, .Label = c("a1 ",
"a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "b10", "b11",
"b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20"
), class = "factor")), .Names = c("Cohort", "ID"), class = "data.frame", row.names = c(NA,
-20L))
次
library(dplyr)
data %>%
group_by(Cohort) %>%
sample_n(size = 10)
をしかし、私の実際のデータは縦ですので、私は、各コホートと、いくつかの内に同じIDの複数のケースを持っていますさまざまなサイズのコホート、したがって一意のIDの割合を選択する必要があります。いかなる援助も感謝します。
data %>% group_by(Cohort) %>%
filter(ID %in% sample(unique(ID), ceiling(0.4*length(unique(ID)))))
これは、ランダムにサンプリングされたIDを含むすべての行を返します。
再現しないのはなぜあなたが持っている問題、そうでなければ私達はそれを理解できません...あなたは複数のIDを持っているなら、この機能を使ってデータを生成してください;) – Arthur