2016-07-08 11 views
0

これはRを初めて学んだ後の最初のプロジェクトです。相対的な観測値を数値に変換する

私はデータフレームにCSVファイルからインポートしている(大)データセットを有します。

私はこの質問の2つの関連列を特定しました。最初は患者の名前を持ち、もう1つは腫脹のレベルを患者に問い合わせます。

膨潤のレベルは、より良い、すなわち相対的な悪化又はほぼ同じです。

すべての患者が同じ数の観察を有するわけではない。

Iは困難大きな分析の一部として使用することができる数値にこれらの相対値を変換した午前。

for row in 'patientname' 
    patientcounter = dtfr1[row, 'patientname']; 
    if dtfr1[row, 'patientname'] == patientcounter 
    if dtfr1[row, 'Does.you.swelling.seem.better.or.worse'] == 'better' 
     conditioncounter--; 
     dtfr1[row, 'Does.you.swelling.seem.better.or.worse'] = conditioncounter; 
    elseif [row, 'Does.you.swelling.seem.better.or.worse'] == 'better' 
     conditoncounter++; 
     dtfr1[row, 'Does.you.swelling.seem.better.or.worse'] = conditioncounter; 
    else 
     dtfr1[row, 'Does.you.swelling.seem.better.or.worse'] = conditioncounter; 
    if dtfr1[row, 'patientname'] =! patientcounter 
    patientcounter = dtfr1[row, 'patientname']; 

はあなたのアドバイスは、この問題に良い解決策は何を次のようになります。以下は

は、私は適切な解決策になると思うものに擬似コードのですか?ありがとう!

答えて

0

私が正しく理解していた場合は、患者によるworsebetterの数の違いを、したいですか?もしそうなら、このようなものが働くでしょう。

# Simulated data 
dtfr1 <- data.frame(patient = sample(letters[1:3], 100, replace=TRUE), 
        condition = sample(c("better", "worse"), 100, replace=TRUE)) 
head(dtfr1) 
# patient condition 
# 1  a  worse 
# 2  b better 
# 3  b  worse 
# 4  a better 
# 5  c  worse 
# 6  a better 

better_count <- tapply(dtfr1$condition, dtfr1$patient, function(x) sum(x == "better")) 
worse_count <- tapply(dtfr1$condition, dtfr1$patient, function(x) sum(x == "worse")) 
worse_count - better_count 
# a b c 
# 5 0 -1 
+0

こんにちはアレクセイは、それは便利ですありがとう!私が言いたいことを忘れたのは、それぞれの観測にも提出日があるということです。時系列に沿って分析できるように、集計条件ではなく観測ごとに条件を記録することが有用であると感じています。それがどうやってどうしたらいいのか分かりますか? – joelross

関連する問題