id变量在另一个id变量中的顺序

时间:2019-01-10 23:46:51

标签: r dplyr

我已经有一个id变量(Patient_id),并且每个id(blood_pressure)有多个观察值,但是我想要一个新的id变量,其中第一个id包含1,第二个id包含2,依此类推,在每个Patient_id中以此类推。请在链接中查看我感兴趣的数据格式。如何使用R生成“ order”变量?我想要这样的东西:

data format

1 个答案:

答案 0 :(得分:0)

这是使用dplyr的解决方案。首先,我创建一个玩具数据框。 (对于以后的问题,如果发布可复制和粘贴的数据而不是图像,对我们来说更容易。dput对此很有用。)

df <- data.frame(patient_id = c(1, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4),
                 blood_pressure = sample(90:134, 12, replace = TRUE))

如下所示:

#    patient_id blood_pressure
# 1           1            130
# 2           1            130
# 3           1            128
# 4           2            109
# 5           2             91
# 6           3             95
# 7           3            129
# 8           4            134
# 9           4            116
# 10          4            101
# 11          4            131
# 12          4            112

接下来,我加载所需的库。

library(dplyr)

然后,我按patient_id分组,使用order函数添加一个名为mutate的变量,该变量是row_number函数给定的每个组中的行号,最后ungroup结果。

df %>% 
  group_by(patient_id) %>% 
  mutate(order = row_number()) %>% 
  ungroup

给予

#    patient_id blood_pressure order
#         <dbl>          <int> <int>
# 1          1            130     1
# 2          1            130     2
# 3          1            128     3
# 4          2            109     1
# 5          2             91     2
# 6          3             95     1
# 7          3            129     2
# 8          4            134     1
# 9          4            116     2
# 10         4            101     3
# 11         4            131     4
# 12         4            112     5