以下の長いパターンに従うデータ フレームがあります。
Name MedName
Name1 atenolol 25mg
Name1 aspirin 81mg
Name1 sildenafil 100mg
Name2 atenolol 50mg
Name2 enalapril 20mg
以下に取得したいと思います(列にこの方法で名前を付けることができるかどうかは気にしません。データをこの形式にするだけです):
Name medication1 medication2 medication3
Name1 atenolol 25mg aspirin 81mg sildenafil 100mg
Name2 atenolol 50mg enalapril 20mg NA
このサイトを通じて、私は reshape/reshape2 パッケージに精通し、これを機能させるために何度か試みましたが、これまでのところ失敗しています。
試してみるdcast(dataframe, Name ~ MedName, value.var='MedName')
と、薬名のフラグである一連の列が得られます(転置される値は1または0です)例:
Name atenolol 25mg aspirin 81mg
Name1 1 1
Name2 0 0
データセットを溶かした後も試しましたがdcast(dataset, Name ~ variable)
、これは次のように吐き出します(各人が持っている薬の数を数えるだけです):
Name MedName
Name1 3
name2 2
最後に、データを溶かしてから、idvar="Name"
timevar="variable"
(すべて Mednames だけです) を使用して再形成しようとしましたが、idvar に複数の一致がある場合、再形成は最初の MedName だけを取得し、休み。
reshape または別の R 関数を使用してこれを行う方法を知っている人はいますか? 基本的にデータを分割して再貼り付けするために、いくつかの for ループと条件を使用して、これをより面倒な方法で行う方法があることを認識していますが、もっと簡単な解決策があることを望んでいました。どうもありがとう!