Reputation: 556
I have a df and I want to group it by links
and sort it by time
. Then, everytime type == 'vehicle leaves traffic'
the cell in the column count
should add +1 of the cell value in the preceding row. If type == 'vehicle enters traffic'
it should deduct 1 from the preceding row.
For clarification, not the preceding row's value should be changed, but the value of the row should be changed based on the preceding value.
This is my approach, but all I get is 0, 1 and 2. I'm expecting much higher values for some links.
parking_min <- cars %>%
group_by(link)%>%
dplyr::mutate(count = if_else(type == 'vehicle leaves traffic', lag(count, n=1,order_by=time)+1,lag(count))) %>%
dplyr::mutate(count = if_else(type == 'vehicle enters traffic',lag(count, n=1, order_by=time)-1,lag(count)))
This is my data:
structure(list(time = c("23707.0", "31209.0", "31210.0", "36230.0",
"36231.0", "38925.0", "39583.0", "40198.0", "40818.0", "41974.0",
"42895.0", "43099.0", "43683.0", "44645.0", "45730.0", "46785.0",
"48846.0", "48905.0", "52790.0", "53829.0", "55021.0", "58240.0",
"58635.0", "59682.0", "59683.0", "63740.0", "63776.0", "68607.0",
"24607.0", "25218.0", "26442.0", "28004.0", "29884.0", "37750.0",
"42623.0", "43965.0", "49426.0", "54925.0", "56688.0", "56689.0",
"57738.0", "61900.0", "64221.0", "67065.0", "69404.0", "77454.0",
"83588.0", "89601.0", "27452.0", "27743.0", "33598.0", "36297.0",
"60604.0", "62940.0", "63184.0", "63250.0", "20911.0", "27013.0",
"29815.0", "49550.0", "53991.0", "55620.0", "61200.0", "67672.0",
"78558.0", "79245.0", "27006.0", "29085.0", "31411.0", "36747.0",
"36877.0", "38434.0", "38807.0", "44607.0", "58068.0", "58800.0",
"65236.0", "65431.0", "69013.0", "69072.0", "25609.0", "29520.0",
"46559.0", "66916.0", "74904.0", "78407.0", "20445.0", "23938.0",
"24017.0", "24281.0", "25283.0", "25873.0", "27137.0", "27342.0",
"28790.0", "28910.0", "29241.0", "29345.0", "29465.0", "29525.0",
"29909.0", "30719.0", "31092.0", "31356.0", "31786.0", "32829.0",
"33966.0", "34175.0", "34545.0", "34888.0", "34977.0", "35775.0",
"35950.0", "38409.0", "38636.0", "39259.0", "39527.0", "40256.0",
"40385.0", "40564.0", "40691.0", "40774.0", "42271.0", "42469.0",
"42895.0", "43103.0", "43223.0", "43599.0", "44476.0", "44903.0",
"44904.0", "45774.0", "45834.0", "45915.0", "46230.0", "46287.0",
"46626.0", "47215.0", "48784.0", "50266.0", "50361.0", "50763.0",
"52685.0", "52793.0", "54688.0", "55105.0", "56310.0", "57885.0",
"58093.0", "58153.0", "59223.0", "60460.0", "60597.0", "60676.0",
"61307.0", "61457.0", "61974.0", "62141.0", "62165.0", "62347.0",
"62591.0", "64175.0", "64280.0", "65555.0", "65808.0", "66038.0",
"66391.0", "66723.0", "66735.0", "66736.0", "66933.0", "67502.0",
"67989.0", "68322.0", "68785.0", "69318.0", "70450.0", "70634.0",
"71069.0", "71741.0", "72121.0", "72292.0", "73236.0", "73775.0",
"74280.0", "80298.0", "80458.0", "80976.0", "81035.0", "84189.0",
"84302.0", "85602.0", "23296.0", "34106.0", "34107.0", "55975.0",
"55976.0", "57434.0", "60561.0", "70091.0", "26085.0", "26163.0",
"26654.0", "27473.0", "28303.0", "29212.0", "29380.0", "29581.0",
"29707.0", "30802.0", "31052.0", "33174.0", "34020.0", "36031.0",
"36392.0", "38037.0", "40717.0", "42099.0", "43154.0", "44413.0",
"44414.0", "44730.0", "44770.0", "46863.0", "46876.0", "48318.0",
"48435.0", "48493.0", "48700.0", "51736.0", "51747.0", "51748.0",
"52221.0", "52302.0", "52599.0", "52921.0", "53104.0", "53230.0",
"53443.0", "54494.0", "55053.0", "56555.0", "56717.0", "58381.0",
"62245.0", "62554.0", "63050.0", "63050.0", "63447.0", "63507.0",
"64054.0", "65090.0", "65090.0", "65217.0", "65218.0", "66571.0",
"66945.0", "67715.0", "68169.0", "68921.0", "68955.0", "69081.0",
"70123.0", "70263.0", "71413.0", "74609.0", "75930.0", "75931.0",
"76676.0", "77855.0", "88490.0", "92653.0", "23458.0", "23770.0",
"29531.0", "29532.0", "32320.0", "32735.0", "47644.0", "50879.0",
"50971.0", "51427.0", "55554.0", "57334.0", "57971.0", "59064.0",
"66852.0", "68689.0", "69206.0", "72502.0", "84592.0", "84593.0",
"90207.0", "90208.0", "34426.0", "74433.0", "32354.0", "64161.0",
"67914.0", "21864.0"), type = c("vehicle enters traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle leaves traffic", "vehicle enters traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle enters traffic",
"vehicle leaves traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle enters traffic", "vehicle enters traffic", "vehicle leaves traffic",
"vehicle enters traffic"), vehicle_id = c(1267069L, 810534L,
810534L, 51825L, 51825L, 1326473L, 1199672L, 1111105L, 1111105L,
532654L, 532654L, 1267069L, 1199672L, 1398907L, 1398907L, 1239391L,
1239391L, 1326473L, 46491L, 46491L, 1179923L, 434774L, 434774L,
4205L, 4205L, 1269433L, 1179923L, 1269433L, 1454119L, 1412246L,
1310775L, 1278645L, 1533113L, 1430553L, 1430553L, 1533113L, 1533113L,
492533L, 1430553L, 1430553L, 492533L, 1278645L, 1454119L, 1533113L,
1278645L, 1310775L, 1412246L, 1278645L, 1161080L, 1290940L, 558745L,
628509L, 628509L, 1161080L, 558745L, 1290940L, 403850L, 774916L,
1530598L, 403850L, 1397256L, 3874L, 774916L, 1530598L, 1397256L,
3874L, 193835L, 1043798L, 1043798L, 1881121L, 193835L, 1221124L,
1881121L, 1221124L, 12799L, 12799L, 526654L, 2066556L, 526654L,
2066556L, 485689L, 486288L, 488147L, 486288L, 485689L, 488147L,
1925302L, 2821L, 1919641L, 2147547L, 1785664L, 1394390L, 1869032L,
1812540L, 1531804L, 1814856L, 1531804L, 2149105L, 1747951L, 1908352L,
1854886L, 1888344L, 1926462L, 1925659L, 1887358L, 1926462L, 1863281L,
1094609L, 1888344L, 1925659L, 1222534L, 2148165L, 1863281L, 2148165L,
1814856L, 1885007L, 1094609L, 1887358L, 1925302L, 1925659L, 1908352L,
1919641L, 1885007L, 1898426L, 1222534L, 2095866L, 1812540L, 1528492L,
2149105L, 1799420L, 1799420L, 1898426L, 2095866L, 1905635L, 1859644L,
1528492L, 1187619L, 1794294L, 1908352L, 1187619L, 2149105L, 1901830L,
1859644L, 1885718L, 1925659L, 4806833L, 1901830L, 1794294L, 4806833L,
2821L, 1905635L, 1785664L, 1887788L, 2149105L, 1885718L, 1912658L,
1394390L, 1457624L, 1869032L, 2147547L, 1908352L, 2064554L, 1457624L,
1902958L, 1888247L, 1888247L, 1670344L, 1898186L, 1378838L, 1378838L,
1840443L, 1747951L, 1887788L, 5259385L, 1215125L, 2064554L, 1912658L,
1887316L, 42794L, 1860654L, 1902958L, 1854886L, 5259385L, 1887316L,
1670344L, 42794L, 1921295L, 1921295L, 1860654L, 1840443L, 1898186L,
1215125L, 80518L, 1131784L, 1131784L, 1060825L, 1060825L, 80518L,
1345214L, 1345214L, 29916L, 29916L, 534393L, 519878L, 525457L,
523658L, 529842L, 526134L, 534394L, 529842L, 523658L, 529554L,
526214L, 29916L, 526214L, 529554L, 479492L, 530841L, 1856482L,
514510L, 514510L, 693877L, 479492L, 29916L, 1270690L, 1856482L,
526134L, 693877L, 790707L, 520491L, 568524L, 568524L, 520491L,
1455918L, 513349L, 29916L, 534585L, 790707L, 513349L, 532803L,
530834L, 1270690L, 1455918L, 526134L, 1309724L, 1309724L, 519877L,
519877L, 533986L, 476491L, 525457L, 519877L, 519877L, 398460L,
398460L, 530834L, 534393L, 519878L, 1145089L, 476491L, 537161L,
530841L, 533986L, 29916L, 526134L, 534585L, 513028L, 513028L,
1145089L, 537161L, 532803L, 534394L, 273572L, 273572L, 861460L,
861460L, 216294L, 216294L, 230683L, 1365760L, 230683L, 310759L,
1521962L, 1521962L, 310759L, 1365760L, 1535243L, 1247561L, 1535243L,
1247561L, 230658L, 230658L, 1277451L, 1277451L, 1428056L, 1428056L,
1140384L, 46083L, 1140384L, 1343106L), link = c(90L, 90L, 90L,
90L, 90L, 90L, 90L, 90L, 90L, 90L, 90L, 90L, 90L, 90L, 90L, 90L,
90L, 90L, 90L, 90L, 90L, 90L, 90L, 90L, 90L, 90L, 90L, 90L, 389L,
389L, 389L, 389L, 389L, 389L, 389L, 389L, 389L, 389L, 389L, 389L,
389L, 389L, 389L, 389L, 389L, 389L, 389L, 389L, 451L, 451L, 451L,
451L, 451L, 451L, 451L, 451L, 480L, 480L, 480L, 480L, 480L, 480L,
480L, 480L, 480L, 480L, 578L, 578L, 578L, 578L, 578L, 578L, 578L,
578L, 578L, 578L, 578L, 578L, 578L, 578L, 662L, 662L, 662L, 662L,
662L, 662L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L,
723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L,
723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L,
723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L,
723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L,
723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L,
723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L,
723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L,
723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L,
723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 723L, 774L, 774L,
774L, 774L, 774L, 774L, 774L, 774L, 859L, 859L, 859L, 859L, 859L,
859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L,
859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L,
859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L,
859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L,
859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L,
859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L, 859L,
859L, 927L, 927L, 927L, 927L, 927L, 927L, 927L, 927L, 927L, 927L,
927L, 927L, 927L, 927L, 927L, 927L, 927L, 927L, 927L, 927L, 927L,
927L, 987L, 987L, 988L, 988L, 988L, 1277L), count = c(1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1)), row.names = c(18798L, 64777L, 64783L, 90025L, 90030L,
102868L, 105834L, 108690L, 111727L, 118283L, 124349L, 125700L,
129642L, 135888L, 142577L, 148772L, 161264L, 161590L, 182778L,
187946L, 193712L, 211483L, 213953L, 220930L, 220932L, 252098L,
252362L, 284709L, 24007L, 27759L, 35618L, 45777L, 57274L, 97498L,
122488L, 131443L, 164666L, 193274L, 202313L, 202319L, 208399L,
237611L, 255705L, 275635L, 288938L, 316125L, 328641L, 334960L,
42227L, 44153L, 77374L, 90336L, 227678L, 245970L, 247907L, 248400L,
6850L, 39423L, 56892L, 165451L, 188728L, 196734L, 232209L, 279294L,
318618L, 320203L, 39374L, 52544L, 65925L, 92485L, 93136L, 100641L,
102349L, 135630L, 210380L, 215004L, 263248L, 264622L, 286884L,
287214L, 30294L, 55175L, 147465L, 274669L, 309732L, 318235L,
5646L, 20075L, 20529L, 22040L, 28176L, 31997L, 40252L, 41570L,
50757L, 51465L, 53497L, 54091L, 54830L, 55211L, 57389L, 61972L,
64148L, 65630L, 67926L, 73590L, 79237L, 80209L, 81961L, 83619L,
84034L, 87938L, 88723L, 100516L, 101524L, 104339L, 105567L, 108951L,
109580L, 110436L, 111056L, 111525L, 120134L, 121493L, 124350L,
125721L, 126499L, 129085L, 134769L, 137553L, 137562L, 142843L,
143218L, 143719L, 145566L, 145897L, 147872L, 151431L, 160891L,
169439L, 169951L, 172179L, 182269L, 182796L, 192084L, 194128L,
200320L, 209292L, 210580L, 210957L, 217800L, 226596L, 227622L,
228226L, 233050L, 234180L, 238184L, 239554L, 239746L, 241169L,
243114L, 255350L, 256150L, 265478L, 267279L, 268878L, 271245L,
273444L, 273513L, 273515L, 274788L, 278257L, 281213L, 283103L,
285741L, 288499L, 293964L, 294807L, 296677L, 299364L, 300811L,
301489L, 304733L, 306468L, 307953L, 322532L, 322917L, 324007L,
324134L, 329621L, 329788L, 331476L, 16560L, 79874L, 79878L, 198570L,
198576L, 206594L, 227352L, 292291L, 33304L, 33809L, 37031L, 42365L,
47741L, 53329L, 54310L, 55545L, 56255L, 62460L, 63930L, 75298L,
79478L, 89112L, 90807L, 98845L, 111205L, 119068L, 126025L, 134327L,
134337L, 136437L, 136711L, 149242L, 149320L, 158130L, 158789L,
159131L, 160368L, 177328L, 177392L, 177394L, 179845L, 180260L,
181812L, 183400L, 184268L, 184922L, 185978L, 191177L, 193860L,
201573L, 202492L, 212365L, 240333L, 242817L, 246833L, 246834L,
249842L, 250280L, 254468L, 262163L, 262164L, 263107L, 263117L,
272463L, 274866L, 279549L, 282270L, 286442L, 286606L, 287265L,
292441L, 293100L, 298081L, 308952L, 312468L, 312471L, 314309L,
317028L, 334227L, 336208L, 17419L, 19144L, 55246L, 55251L, 70799L,
73085L, 154041L, 172793L, 173296L, 175721L, 196355L, 206048L,
209794L, 216742L, 274263L, 285199L, 287908L, 302276L, 330230L,
330233L, 335274L, 335275L, 81402L, 308426L, 71000L, 255248L,
280759L, 10158L), class = "data.frame")
Possible output:
time type vehicle_id link count
18798 23707.0 vehicle enters traffic 1267069 90 0 #start point
64777 31209.0 vehicle leaves traffic 810534 90 1 #+1
64783 31210.0 vehicle enters traffic 810534 90 0 #-1
90025 36230.0 vehicle leaves traffic 51825 90 1
90030 36231.0 vehicle enters traffic 51825 90 0
102868 38925.0 vehicle leaves traffic 1326473 90 1
105834 39583.0 vehicle leaves traffic 1199672 90 2 #here as well 1+1 =2
108690 40198.0 vehicle leaves traffic 1111105 90 3 #2+1 =3
111727 40818.0 vehicle enters traffic 1111105 90 2 #3-1 =2
118283 41974.0 vehicle leaves traffic 532654 90 3
124349 42895.0 vehicle enters traffic 532654 90 2
125700 43099.0 vehicle leaves traffic 1267069 90 3
129642 43683.0 vehicle enters traffic 1199672 90 2
135888 44645.0 vehicle leaves traffic 1398907 90 3
142577 45730.0 vehicle enters traffic 1398907 90 2
148772 46785.0 vehicle leaves traffic 1239391 90 3
161264 48846.0 vehicle enters traffic 1239391 90 2
161590 48905.0 vehicle enters traffic 1326473 90 1
182778 52790.0 vehicle leaves traffic 46491 90 2
Eventually I want to find the maximum count for each link. But that can be done in another step and does not need to be part of the solution, perhaps it helps to clarify the question.
Upvotes: 2
Views: 59
Reputation: 4658
I think this does what you want:
df %>%
group_by(link) %>%
arrange(time) %>%
mutate(
adder = case_when(
type == "vehicle leaves traffic" ~ 1,
type == "vehicle enters traffic" ~ -1,
TRUE ~ 0),
count = count + cumsum(adder)
) %>%
select(-adder)
which gives
time type vehicle_id link count
1 23707.0 vehicle enters traffic 1267069 90 0
2 31209.0 vehicle leaves traffic 810534 90 1
3 31210.0 vehicle enters traffic 810534 90 0
4 36230.0 vehicle leaves traffic 51825 90 1
5 36231.0 vehicle enters traffic 51825 90 0
6 38925.0 vehicle leaves traffic 1326473 90 1
7 39583.0 vehicle leaves traffic 1199672 90 2
8 40198.0 vehicle leaves traffic 1111105 90 3
9 40818.0 vehicle enters traffic 1111105 90 2
10 41974.0 vehicle leaves traffic 532654 90 3
Upvotes: 2
Reputation: 8117
I think this is what you want:
df %>%
arrange(link, time) %>%
group_by(link) %>%
mutate(vehicles_entered_traffic = cumsum(type == "vehicle enters traffic")
, vehicles_left_traffic = cumsum(type == "vehicle leaves traffic")
, count = count[1] + vehicles_left_traffic - vehicles_entered_traffic)
Upvotes: 3