我在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))
答案 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 ...