Mengingat itu, saya memiliki kerangka data seperti di bawah ini:

dt <- data.frame(year = sample(c(2000:2019),100 ),
           month = sample(c(1:12),100 ),
           paitent_ID = sample(c(1:50),100,replace = T )

Saya perlu groupby dataset menggunakan paitent_ID lalu mengurutkan setiap grup menggunakan year dan month.

Inilah yang saya coba:

library(dplyr)

dt %>% 
  group_by(paitent_ID) %>%
  group_map( ~ order(year, month)   )

Tapi, itu mengeluh dengan:

Error in order(year, month) : object 'year' not found
r
1
Jeff 16 Desember 2019, 23:11

1 menjawab

Jawaban Terbaik

Kita dapat menggunakan arrange sebagai ganti order

library(dplyr)
dt %>% 
  group_by(paitent_ID) %>%
  group_map(  ~ .x %>%
                    arrange(year, month))
#[[1]]
# A tibble: 4 x 2
#   year month
#  <int> <int>
#1  2003    10
#2  2009    12
#3  2013     3
#4  2013     6

#[[2]]
# A tibble: 6 x 2
#   year month
#  <int> <int>
#1  2000     6
#2  2000     9
#3  2006     8
#4  2009     3
#5  2015    12
#6  2017    10
#...
2
akrun 16 Desember 2019, 20:19