4

私はこの種のデータフレームを持っています:

df<-data.frame(Value=c(0,1,2), A=c(3,2,0), B=c(1,4,2))

各列の数値が各「値」(ヒストグラムのデータ)の出現回数に対応していることを考慮して、各グループ(A、B)の値の分布を持つベクトルを取得したいと考えています。したがって、値 1 の A 列に 5 がある場合、ベクトル結果に 5 つの 1 (1,1,1,1,1) が必要です。この例では、結果は次のようになります::

  A<-c(0,0,0,1,1)
  B<-c(0,1,1,1,1,2,2)

どうも

4

1 に答える 1

4

apply()関数とを組み合わせることができますrep()。ではrep()、列 A と B を使用time=して repeat に設定しValueます。

apply(df[,-1],2,function(x) rep(df$Value,times=x))
$A
[1] 0 0 0 1 1

$B
[1] 0 1 1 1 1 2 2

アップデート

@Arun関数で指摘されているようapply()に、関数を適用する前にデータフレームをマトリックスに強制しますが、これは必要ありません。この場合、lapply()関数を列に適用するため、関数を使用しても同じ結果が得られます。

lapply(df[,-1],function(x) rep(df$Value,times=x))
$A
[1] 0 0 0 1 1

$B
[1] 0 1 1 1 1 2 2
于 2013-08-06T10:23:52.763 に答える