これは実際の統計的な質問ではなく、むしろ実際の統計的な分析を行う前のデータ準備に関する質問です。私は疎なデータからなるデータフレームを持っています。このデータを「展開」して欠損値のゼロをグループごとにグループ化したいと考えています。ここRのデータフレーム「展開」プロシージャ?
は(t
スパースタイムスタンプとx
値であり、a
とb
グループを規定する2つの要因である)データの例である:
test <- data.frame(
a=c(1,1,1,1,1,1,1,1,1,1,1),
b=c(1,1,1,1,1,2,2,2,2,2,2),
t=c(0,2,3,4,7,3,4,6,7,8,9),
x=c(1,2,1,2,2,1,1,2,1,1,3))
私は間の値を拡張したいと仮定するとt=0
とt=9
が、これは私が望んだ結果である:
test.expanded <- data.frame(
a=c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
b=c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2),
t=c(0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9),
x=c(1,0,2,1,2,0,0,2,0,0,0,0,0,1,1,0,2,1,1,3))
ゼロはのすべての欠落値のために挿入されています3210。これにより、使いやすくなります。
データフレームをソートして各行をループし、一度に1行ずつ欠落した行を追加する、すばやく汚れた実装があります。しかし、私は完全に解決策には満足していません。それを行うより良い方法はありますか?
SASに精通している方は、proc expand
と似ています。
ありがとうございます!
Hm。他の変数でもグループ化したいと思う。このアプローチを拡張するのに十分なほど簡単ですが、誰かが確実に1つのステップでこれを行うコマンドが出てくるかどうかを確認します。 –
はい、この例では、出力データフレームは20行私は2つのグループ(a = 1、b = 1)(a = 1、b = 2)を持っているからです。ご回答有難うございます。 – caas
ああ、 'plyr'パッケージのおかげでグループ分けは本当に問題ではないことが分かりました:ddply(test、c(" a "、" b ")、expand_function)、あなたが提案した行の何かにexpand_functionを定義することができます。 – caas