Мне нужно пересчитать каждый разный грузовик, который проходит в одной и той же треске за тот же период, и создать новый столбец, в котором содержится разделение между arrivestops/(подсчитанное количество). Таким образом, число этих столбцов одинаково для одной трески за тот же период для всех грузовиков, которые проходят в этот период для этой трески.Создайте новый столбец, используя sqldf в R и COUNT с несколькими критериями
data frame is truck and below is my data
Cod | trucks | route | startrip |arrivestops| period
-------|-----------|---------|--------- |-----------|---------
RM-0378| CJRL-68 |T248 00R | 22:59:16| 33 | 46
structure(list(Cod = structure(c(5L, 10L, 4L, 6L, 6L, 13L, 3L,
12L, 14L, 6L, 6L, 10L, 10L, 10L, 16L, 6L, 6L, 12L, 3L, 1L, 7L,
17L, 3L, 12L, 2L, 2L, 3L, 12L, 4L, 9L, 10L, 10L, 15L, 12L, 3L,
2L, 7L, 1L, 8L, 4L, 12L, 3L, 11L, 6L, 6L), .Label = c("RM-0035",
"RM-0251", "RM-0370", "RM-0374", "RM-0378", "RM-0471", "RM-0532",
"RM-0550", "RM-0595", "RM-0598", "RM-0732", "RM-0764", "RM-0774",
"RM-0779", "RM-0780", "RM-0782", "RM-0783"), class = "factor"),
trucks = structure(c(18L, 33L, 32L, 29L, 27L, 39L, 3L, 3L,
19L, 25L, 28L, 37L, 1L, 12L, 20L, 30L, 26L, 7L, 7L, 36L,
23L, 16L, 5L, 5L, 38L, 35L, 9L, 9L, 22L, 2L, 13L, 15L, 17L,
4L, 4L, 34L, 24L, 14L, 21L, 31L, 6L, 6L, 8L, 11L, 10L), .Label = c("BBKB-12",
"BBKD-15", "BJFP-33", "BJFS-62", "BJFT-31", "BJFT-59", "BJFV-84",
"BJFW-52", "BJFX-52", "BKWK-93", "CJRB-53", "CJRG-55", "CJRG-56",
"CJRG-62", "CJRG-71", "CJRK-87", "CJRL-29", "CJRL-68", "CJRL-69",
"CJRL-93", "CJRW-22", "CJRY-86", "FLXF-31", "FLXF-53", "FLXG-86",
"FLXJ-59", "FLXJ-62", "FLXJ-64", "FLXJ-68", "FLXJ-84", "FLXP-93",
"FLXR-12", "FLXR-84", "WA-9478", "WA-9488", "WU-5547", "WU-5556",
"ZN-6184", "ZN-6266"), class = "factor"), route = structure(c(18L,
12L, 23L, 11L, 3L, 19L, 22L, 22L, 17L, 2L, 2L, 9L, 10L, 8L,
15L, 11L, 3L, 25L, 25L, 1L, 30L, 16L, 28L, 28L, 33L, 32L,
26L, 26L, 24L, 7L, 6L, 13L, 14L, 25L, 25L, 33L, 29L, 5L,
31L, 21L, 27L, 27L, 20L, 11L, 4L), .Label = c("F01 C0 00I",
"F05 00I", "F06 00I", "F08 00I", "F10 00R", "F13 00R", "F14 00R",
"F15 00R", "F16 00I", "F19 00R", "F20 00I", "F22 00I", "F25 00R",
"T238 00R", "T243 00I", "T245 00I", "T246 00I", "T248 00R",
"T252 00R", "T301 C0 00I", "T321 00I", "T323 00I", "T333 00I",
"T337 00R", "T355 00R", "T357 00I", "T358 00R", "T363 00R",
"T381 00R", "T382 00R", "T384 00R", "T401 00R", "T405 00R"
), class = "factor"), startrip = structure(c(35L, 31L, 37L,
18L, 12L, 34L, 36L, 36L, 38L, 11L, 14L, 29L, 30L, 28L, 32L,
13L, 9L, 33L, 33L, 21L, 1L, 23L, 20L, 20L, 3L, 2L, 24L, 24L,
27L, 6L, 10L, 8L, 19L, 26L, 26L, 4L, 17L, 7L, 16L, 25L, 26L,
26L, 22L, 5L, 15L), .Label = c("21:05:23", "21:10:34", "21:14:36",
"21:19:55", "21:39:11", "21:48:51", "21:58:25", "21:59:50",
"22:03:14", "22:09:11", "22:13:00", "22:14:04", "22:15:30",
"22:16:27", "22:17:21", "22:22:05", "22:22:31", "22:24:35",
"22:25:00", "22:25:15", "22:26:29", "22:27:52", "22:28:19",
"22:28:32", "22:29:03", "22:30:26", "22:31:32", "22:40:25",
"22:41:51", "22:44:40", "22:51:24", "22:55:23", "22:57:41",
"22:58:36", "22:59:16", "23:00:03", "23:00:36", "23:01:57"
), class = "factor"), arrivestops = c(33L, 249L, 205L, 283L,
283L, 104L, 44L, 178L, 59L, 283L, 283L, 249L, 249L, 249L,
96L, 283L, 283L, 178L, 44L, 290L, 384L, 48L, 68L, 216L, 178L,
178L, 68L, 216L, 256L, 379L, 253L, 253L, 88L, 216L, 68L,
178L, 384L, 290L, 172L, 256L, 216L, 68L, 255L, 341L, 341L
), period = c(46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L,
46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L, 46L, 45L, 45L,
45L, 45L, 45L, 45L, 45L, 45L, 45L, 45L, 45L, 45L, 45L, 45L,
45L, 45L, 45L, 45L, 45L, 45L, 45L, 45L, 45L, 45L, 45L, 45L
)), .Names = c("Cod", "trucks", "route", "startrip", "arrivestops",
"period"), class = "data.frame", row.names = c(NA, -45L))
Я пытаюсь использовать sqldf
с SELECT
и COUNT
, но я не знаю, хорошо, как использовать несколько условий с подсчета и создать новый столбец с результатом. Для COUNT
мне нужно сгруппировать, но мне не нужна эта группа строк в результате, мне нужно, чтобы все осталось.
Просто пример:
Cod | trucks | route | startrip |arrivestops| period |arrivesindv
-----|-----------|---------|--------- |-----------|--------- |----------
RM-0378| CJRL-68 |T248 00R | 22:59:16| 30 | 46 | 6
Какой 6 в arrivesind является результатом 30/5, при условии, что для этой трески в этот период проходят 5 различных машин.
доля ваш ожидаемый результат как это непонятно, что вам хотеть. –