stratified
を私の "splitstackshape"パッケージから使用しているとします。
エラーは、名前付きベクトル(たとえば、c(a = 5, b = 10)
のようなもの)が必要であることを説明します。
ただし、この機能の機能は、階層化に使用される変数が1つしかないことを前提としています。これを修正するには、「Loc」列と「Format」列を貼り付けるだけで新しいグループ化変数を作成できます。
は、ここで簡単な例です....
あなたの元のデータセットのいくつかのサンプルデータでスタートして、必要なサンプルサイズを示したデータセット。
library(splitstackshape)
set.seed(1)
mydf <- data.table(strata1 = sample(letters[1:2], 25, TRUE),
strata2 = sample(c("A", "B"), 25, TRUE),
values = sample(25, replace = TRUE))
head(mydf)
# strata1 strata2 values
# 1: a A 12
# 2: a A 22
# 3: b A 11
# 4: b B 7
# 5: a A 2
# 6: b A 3
wanted <- data.table(strata1 = c("a", "a", "b", "b"),
strata2 = c("A", "B", "A", "B"),
count = c(2, 3, 5, 2))
wanted
# strata1 strata2 count
# 1: a A 2
# 2: a B 3
# 3: b A 5
# 4: b B 2
出力を取得するには、2つの階層化列を結合する「KEY」という列を追加します。これを両方のデータセットに行うことはできますが、私は単に「必要な」データセットを使用してそれを実行しました。
out <- stratified(
mydf[, KEY := paste(strata1, strata2, sep = "_")], "KEY",
with(wanted, setNames(count, paste(strata1, strata2, sep = "_"))))
out
# strata1 strata2 values KEY
# 1: a A 21 a_A
# 2: a A 2 a_A
# 3: a B 9 a_B
# 4: a B 3 a_B
# 5: a B 9 a_B
# 6: b A 17 b_A
# 7: b A 12 b_A
# 8: b A 3 b_A
# 9: b A 17 b_A
# 10: b A 13 b_A
# 11: b B 8 b_B
# 12: b B 20 b_B
は、元の層化変数によって得られた試料の大きさの比較:あなたは `人口$ SampleSize`後の括弧を削除すると
out[, .N, .(strata1, strata2)]
# strata1 strata2 N
# 1: a A 2
# 2: a B 3
# 3: b A 5
# 4: b B 2
何が起こりますか? – ANG
あなたのデータの画像を掲載していませんが、私たちは画像を読み込めないので役に立ちません。このサイトのヘルプと[this](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)を読み、質問を編集してください。 – shea