#r
Вопрос:
У меня есть фрейм данных ниже, и я хотел бы отсортировать его по столбцу даты Run Date
и времени (от самых ранних до последних дат), но для каждого конкретного фактора столбца SN
, который в данном случае имеет 2 уровня 134080504
и T133230503A
.
datlt;-structure(list(SN = c("134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A"), `Status [F/S]` = c("S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S"), `Run Date` = structure(c(1256466600, 1256264100, 1256228100, 1256219100, 1256202000, 1228897800, 1218629760, 1177851660, 1177462800, 1172398500, 1171795800, 1164396600, 1163971800, 1157567400, 1157224500, 1157079000, 1156874100, 1156752000, 1156410000, 1148266800, 1147984200, 1147780800, 1147177800, 1142753400, 1141551000, 1141372800, 1130468400, 1625724600, 1625724600, 1625724600, 1623628800, 1623628800, 1623628800, 1623358800, 1623358800, 1623358800, 1566812460, 1566812460, 1566812460, 1566665700, 1566665700, 1566665700, 1554503520, 1554503520, 1554503520, 1554161880, 1554161880, 1554161880, 1553929200, 1553929200), class = c("POSIXct", "POSIXt"), tzone = "UTC")), row.names = c(NA, 50L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
Попробуй!
library(dplyr) dat %gt;% arrange(`Run Date`, SN)
Ответ №2:
Основное внимание в этом ответе уделяется тому, что Run Date
упорядочивается, в то SN
время как нет (см. Ниже, однако).
Мы могли бы использовать умный цикл for здесь.
for (g in unique(dat$SN)) { dat[dat$SN == g, ] lt;- dat[order(dat #r
Вопрос:
У меня есть фрейм данных ниже, и я хотел бы отсортировать его по столбцу датыRun Date
и времени (от самых ранних до последних дат), но для каждого конкретного фактора столбцаSN
, который в данном случае имеет 2 уровня134080504
иT133230503A
.datlt;-structure(list(SN = c("134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "134080504", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A", "T133230503A"), `Status [F/S]` = c("S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S"), `Run Date` = structure(c(1256466600, 1256264100, 1256228100, 1256219100, 1256202000, 1228897800, 1218629760, 1177851660, 1177462800, 1172398500, 1171795800, 1164396600, 1163971800, 1157567400, 1157224500, 1157079000, 1156874100, 1156752000, 1156410000, 1148266800, 1147984200, 1147780800, 1147177800, 1142753400, 1141551000, 1141372800, 1130468400, 1625724600, 1625724600, 1625724600, 1623628800, 1623628800, 1623628800, 1623358800, 1623358800, 1623358800, 1566812460, 1566812460, 1566812460, 1566665700, 1566665700, 1566665700, 1554503520, 1554503520, 1554503520, 1554161880, 1554161880, 1554161880, 1553929200, 1553929200), class = c("POSIXct", "POSIXt"), tzone = "UTC")), row.names = c(NA, 50L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
Попробуй!
library(dplyr) dat %gt;% arrange(`Run Date`, SN)
Ответ №2:
Основное внимание в этом ответе уделяется тому, что
Run Date
упорядочивается, в тоSN
время как нет (см. Ниже, однако).Мы могли бы использовать умный цикл for здесь.
Run Date`)[dat$SN == g], ] }
dat # SN Status [F/S] Run Date # 1 134080504 S 2005-10-28 03:00:00 # 2 134080504 S 2006-03-03 08:00:00 # 3 134080504 S 2006-03-05 09:30:00 # 4 134080504 S 2006-03-19 07:30:00 # 5 134080504 S 2006-05-09 12:30:00 # 6 134080504 S 2006-05-16 12:00:00 # 7 134080504 S 2006-05-18 20:30:00 # 8 134080504 S 2006-05-22 03:00:00 # 9 134080504 S 2006-08-24 09:00:00 # 10 134080504 S 2006-08-28 08:00:00 # 11 134080504 S 2006-08-29 17:55:00 # 12 134080504 S 2006-09-01 02:50:00 # 13 134080504 S 2006-09-02 19:15:00 # 14 134080504 S 2006-09-06 18:30:00 # 15 134080504 S 2006-11-19 21:30:00 # 16 134080504 S 2006-11-24 19:30:00 # 17 134080504 S 2007-02-18 10:50:00 # 18 134080504 S 2007-02-25 10:15:00 # 19 134080504 S 2007-04-25 01:00:00 # 20 134080504 S 2007-04-29 13:01:00 # 21 134080504 S 2008-08-13 12:16:00 # 22 134080504 S 2008-12-10 08:30:00 # 23 134080504 S 2009-10-22 09:00:00 # 24 134080504 S 2009-10-22 13:45:00 # 25 134080504 S 2009-10-22 16:15:00 # 26 134080504 S 2009-10-23 02:15:00 # 27 134080504 S 2009-10-25 10:30:00 # 28 T133230503A S 2019-03-30 07:00:00 # 29 T133230503A S 2019-03-30 07:00:00 # 30 T133230503A S 2019-04-01 23:38:00 # 31 T133230503A S 2019-04-01 23:38:00 # 32 T133230503A S 2019-04-01 23:38:00 # 33 T133230503A S 2019-04-05 22:32:00 # 34 T133230503A S 2019-04-05 22:32:00 # 35 T133230503A S 2019-04-05 22:32:00 # 36 T133230503A S 2019-08-24 16:55:00 # 37 T133230503A S 2019-08-24 16:55:00 # 38 T133230503A S 2019-08-24 16:55:00 # 39 T133230503A S 2019-08-26 09:41:00 # 40 T133230503A S 2019-08-26 09:41:00 # 41 T133230503A S 2019-08-26 09:41:00 # 42 T133230503A S 2021-06-10 21:00:00 # 43 T133230503A S 2021-06-10 21:00:00 # 44 T133230503A S 2021-06-10 21:00:00 # 45 T133230503A S 2021-06-14 00:00:00 # 46 T133230503A S 2021-06-14 00:00:00 # 47 T133230503A S 2021-06-14 00:00:00 # 48 T133230503A S 2021-07-08 06:10:00 # 49 T133230503A S 2021-07-08 06:10:00 # 50 T133230503A S 2021-07-08 06:10:00
Или попробуй
data.table
.library(data.table) dt lt;- as.data.table(dat) dt[, `Run Date` := sort(`Run Date`), by=SN]
dt # SN Status [F/S] Run Date # 1: 134080504 S 2005-10-28 03:00:00 # 2: 134080504 S 2006-03-03 08:00:00 # 3: 134080504 S 2006-03-05 09:30:00 # 4: 134080504 S 2006-03-19 07:30:00 # 5: 134080504 S 2006-05-09 12:30:00 # 6: 134080504 S 2006-05-16 12:00:00 # 7: 134080504 S 2006-05-18 20:30:00 # 8: 134080504 S 2006-05-22 03:00:00 # 9: 134080504 S 2006-08-24 09:00:00 # 10: 134080504 S 2006-08-28 08:00:00 # 11: 134080504 S 2006-08-29 17:55:00 # 12: 134080504 S 2006-09-01 02:50:00 # 13: 134080504 S 2006-09-02 19:15:00 # 14: 134080504 S 2006-09-06 18:30:00 # 15: 134080504 S 2006-11-19 21:30:00 # 16: 134080504 S 2006-11-24 19:30:00 # 17: 134080504 S 2007-02-18 10:50:00 # 18: 134080504 S 2007-02-25 10:15:00 # 19: 134080504 S 2007-04-25 01:00:00 # 20: 134080504 S 2007-04-29 13:01:00 # 21: 134080504 S 2008-08-13 12:16:00 # 22: 134080504 S 2008-12-10 08:30:00 # 23: 134080504 S 2009-10-22 09:00:00 # 24: 134080504 S 2009-10-22 13:45:00 # 25: 134080504 S 2009-10-22 16:15:00 # 26: 134080504 S 2009-10-23 02:15:00 # 27: 134080504 S 2009-10-25 10:30:00 # 28: T133230503A S 2019-03-30 07:00:00 # 29: T133230503A S 2019-03-30 07:00:00 # 30: T133230503A S 2019-04-01 23:38:00 # 31: T133230503A S 2019-04-01 23:38:00 # 32: T133230503A S 2019-04-01 23:38:00 # 33: T133230503A S 2019-04-05 22:32:00 # 34: T133230503A S 2019-04-05 22:32:00 # 35: T133230503A S 2019-04-05 22:32:00 # 36: T133230503A S 2019-08-24 16:55:00 # 37: T133230503A S 2019-08-24 16:55:00 # 38: T133230503A S 2019-08-24 16:55:00 # 39: T133230503A S 2019-08-26 09:41:00 # 40: T133230503A S 2019-08-26 09:41:00 # 41: T133230503A S 2019-08-26 09:41:00 # 42: T133230503A S 2021-06-10 21:00:00 # 43: T133230503A S 2021-06-10 21:00:00 # 44: T133230503A S 2021-06-10 21:00:00 # 45: T133230503A S 2021-06-14 00:00:00 # 46: T133230503A S 2021-06-14 00:00:00 # 47: T133230503A S 2021-06-14 00:00:00 # 48: T133230503A S 2021-07-08 06:10:00 # 49: T133230503A S 2021-07-08 06:10:00 # 50: T133230503A S 2021-07-08 06:10:00 # SN Status [F/S] Run Date
В противном случае мы могли бы, конечно, тривиально сделать
dat[with(dat, order(SN, `Run Date`)), ]
или
dt[order(SN, `Run Date`)]
и на заказ
SN
тоже.