由变量R中的第三个变量调节的变量的计算值

时间:2016-12-06 19:25:12

标签: r

我在R中使用包含的数据框 Patient_ID, date, ulcer_area(cm2), initial measure(yes/no)。 每位患者在不同日期都有一个或多个面积测量值(ulcer_area) 我试图为每个患者创建一个名为area_dif的新变量,它是当前测量和初始测量的一部分

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

database

1 个答案:

答案 0 :(得分: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 ...