2016-04-29 17 views
-1

***この質問をするには、私の下の例では、実際のデータを実際のデータに存在するTimeカラムを削除しました(同じ公称時間)私のデータは1行に1つのスコアを持っていました。私がこれらの時間を丸めると、私はdcastを使って問題を解決しました:)R data.table tidying - 複数の基準に基づいて行を集約する

私は現在データを整理しようとしています。私はいくつかのロードブロッキングに走っています(私はRの初心者です。サイト)。私は、人と症状の名目上の時間の両方を照合することに基づいて、列に表示される症状を持つようにデータを変換したい。このデータを整理して、64,000件のデータセットを約8,000個に減らします。

Person Nominal.Time Name   Score 
1  +30   A    6 
1  +30   B    9 
1  +30   C    3 
2  +90   A    1 
2  +90   B    5 
2  +90   C    2 

私は次のように私のデータを変換することができました:私のデータは、現在、このようになります

library(reshape2) 
WideSymptomData <- dcast(SymptomData,Person+Nominal.Time~Symptom.Name, value.var="Symptom.Score") 

Person Nominal.Time A B C 
1  +30   6     
1  +30    9   
1  +30     3  
2  +90   1    
2  +90    5   
2  +90     2  

しかし残念ながら、私はその時点で困惑します。私が研究してきましたし、最終的にこれに到達するために、次のステップを実行する方法を見つけるように見えることはできません。

Person Nominal.Time A B C 
1  +30   6 9 3     
2  +90   1 5 2   

私は私が正常に適用することができませんでしたが、このquestionは私に似たかもしれないと思いますそれに対する答え。どんな指導も大変感謝しています。

+0

'reshape(data、dir = 'wide'、idvar = c( 'Person'、 'Nominal.Time')、timevar = 'Symptom.Name')' – rawr

答えて

2

これは

dcast(SymptomData, Person+Nominal.Time~Symptom.Name, value.var="Symptom.Score") 
# Person Nominal.Time A B C 
# 1  1   +30 6 9 3 
# 2  2   +90 1 5 2 

reshape2_1.4.1data.table_1.9.6でテストだけで正常に動作し、次のデータ

SymptomData <- data.table(read.table(text="Person Nominal.Time Symptom.Name Symptom.Score 
1  +30   A    6 
1  +30   B    9 
1  +30   C    3 
2  +90   A    1 
2  +90   B    5 
2  +90   C    2", header=T, colClasses=c("numeric","character","character","numeric"))) 

を使用します。あなたの例が実際のデータを表すことを確認してください。

+0

このコードを使用すると、 Nominal.Timeを値の列として使用する場合は、value.varを使用して上書きしてください。症状A、B、C列にはNominal.Time値が設定されていますが、最初の投稿で説明したように、空白(NAs)を含む多くの行にはまだ直面しています。 – willz

+0

value.varパラメータを追加するとよいでしょう:dcast(SymptomData、Person + Nominal.Time〜Symptom.Name、value.var = "Symptom.Score") –

+0

@willzあなたのパッケージのバージョン番号を追加できますか?を使用して?上記のデータでテストしましたか?それとももっと柱があるのですか? – MrFlick

関連する問題