2017-03-09 4 views
0

してテーブルを作成します。私は千個の行と4つの属性を持つ大規模なR行列を持っており、4つのレベルごとになるように属性をあらかじめ指定された周波数

Row A B C D 
    1  1 3 4 2 
    2  2 1 3 4 
    3  1 2 4 3 
    ... ... 
    1000 3 4 1 2 

が、私はそのようにあらかじめ指定された割合で新しいテーブルを作成したいです属性Aのレベル1は、時間の25%、レベル2の50%、レベル3の10%、レベル4の15%である。テーブルのサイズは1,000行より小さく、行はユニークでなければなりません。

proportions <- c(0.25,0.5,0.1,0.15) 

私はそれが基本的な質問のようなものだ知っているが、私は2時間、私の頭が壊れていると、スタックオーバーフローやインターネット上で何かを発見していません。

UPDATE

私は列内の同じ組み合わせを維持したいです。だから私は与えられた比率で新しいテーブルを作成したいと思いますが、すでに使用しているテーブル、つまり組み合わせを使用しています。

答えて

-1

「再シャッフル」したい割合でセットを作成できます。

A <- c(rep(1,250), rep(2,500), rep(3,100), rep(4,150)) 
B <- sample(A, 1000) 

EDIT: それはOPが望んでいるものを完全にクリートではありません。あなたがしたい場合

はまったく同じテーブルには、すべての新しいカウントが古いカウント 中で割り切れるように、あなたは観察の数に制限されているのと同じ正確な比率を得るために

df_new <- df[sample(1:nrow(df), nrow(df)),] 

を試すことができ、ランダム化あなたが試みることができるそれぞれのユニークな行の割合を得るために:

# simulating the table 
a <- c(rep(1,250), rep(2,500), rep(3,100), rep(4,150)) 
b <- sample(a, 4000, replace = T) 

df <- as.data.frame(matrix(b, ncol = 4)) 

names(df) <- c('a','b','c','d') 

# getting the proportions 
z <- aggregate(row.names(df), list(df$a, df$b, df$c, df$d), function(x) freq = length(x)) 
+0

私はすでに持っているのと同じ正確な組み合わせが必要です。だから私は列間の組み合わせを保持しているテーブルからそれらを作成する、私は一から新しいテーブルが必要はありません。 – adrian1121

+0

ポイントは、属性内の現在のレベルの比率が均衡しているため、すべて同じ比率であり、アンバランスでも同じ組み合わせを維持したいと考えています。 – adrian1121

+0

あなたは私の答えの後半の部分を使ってユニークな組み合わせを取得し、同じ組み合わせでも異なる比率でセットを作り直すことができます。 –

関連する問題