2016-12-06 19 views
-3

我正在R中工作,其數據框包括 Patient_ID, date, ulcer_area(cm2), initial measure(yes/no)。 每個病人在不同的日期區(ulcer_area)的一種或多種措施 我正嘗試爲每一個病人一個名爲area_dif新的變量,它是德電流測量的比例和初始計量R中由第三個變量調節的變量的計算值

area_dif = by Patien_ID (ulcer_area/(ulcer_area WHERE initial measure=yes)) 

database

+0

樣本數據,使用'頭()'或'dput()' –

回答

0

我會用mapply

df = data.frame(Patien_ID = rep(1:4,3), ulcer_area = rnorm(12,5), 
       initial = rep(c("Yes","No", "No"),4)) 
str(df) 
'data.frame': 12 obs. of 3 variables: 
$ Patien_ID : int 1 2 3 4 1 2 3 4 1 2 ... 
$ ulcer_area: num 4.48 5.27 5.38 4.63 4.45 ... 
$ initial : Factor w/ 2 levels "No","Yes": 2 1 1 2 1 1 2 1 1 2 ... 

df$area_diff <- mapply(function(i, area) { 
    area/df$ulcer_area[df$initial == 'Yes' & df$Patien_ID == i] 
    }, 
    i = df$Patien_ID, area = df$ulcer_area) 

str(df) 
'data.frame': 12 obs. of 4 variables: 
$ Patien_ID : int 1 2 3 4 1 2 3 4 1 2 ... 
$ ulcer_area: num 4.48 5.27 5.38 4.63 4.45 ... 
$ initial : Factor w/ 2 levels "No","Yes": 2 1 1 2 1 1 2 1 1 2 ... 
$ area_diff : num 1 1.246 0.933 1 0.992 ... 
相關問題