2016-07-08 2 views
0

이것은 자바를 배운 후에 R의 첫 프로젝트입니다.상대 관측을 수치로 변환

나는 CSV 파일에서 데이터 프레임으로 가져온 (큰) 데이터 세트를 가지고 있습니다.

나는이 질문에 대한 두 개의 관련 칼럼을 식별했다. 첫 번째는 환자의 이름을 갖고 두 번째는 환자에게 부종의 수준을 묻는다.

팽창의 정도는 상대적인 것, 즉 더 좋거나 나쁨 또는 거의 같습니다.

모든 환자가 같은 수의 관찰을하는 것은 아닙니다.

이러한 상대적인 값을 더 큰 분석의 일부로 사용할 수있는 숫자 값으로 변환하는 데 어려움이 있습니다.

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']; 

이 조언은이 문제에 대한 좋은 해결책이 무엇을 할 것입니다 : 아래

내가 적절한 해결책이 될 수 있다고 생각 무엇을 psuedocode입니까? 감사!

답변

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

안녕 Alexey, 감사합니다. 그러나 제가 언급 한 것을 잊어 버린 것은 각 관측 역시 제출 날짜가 있다는 것입니다. 분석이 시계열을 따라 수행 될 수 있도록 총 조건보다는 각 관찰에 대한 조건을 기록하는 것이 유용 할 것이라고 생각합니다. 그게 어떻게 할 수 있는지 아세요? – joelross

관련 문제