r - 如何在 R 中找到与 oneonther 显着不同的行对?
问题描述
我有一个 df 显示id
每小时通过路段的汽车百分比。测量进一步分成方向r
。
最后一列是小时记录1
。24
我感兴趣的是找到id
小时值之间存在显着差异的地方,即早上/晚上交通因方向而异的地方r
。
我不知道如何有效地解决这个问题。它需要首先是一个 group by id
,然后将行相互减去,看看是否有任何值大于(例如)2。
所需的输出是一个向量,id
其中的差值大于 2 至少一小时。
数据:
structure(list(id = c("Hochbergerstrasse 55", "Hochbergerstrasse 55",
"Johanniterbrücke", "Johanniterbrücke", "Wettsteinbrücke", "Wettsteinbrücke",
"Viaduktstrasse 60 (Rialto)", "Viaduktstrasse 60 (Rialto)", "Dorenbachviadukt",
"Dorenbachviadukt", "Wasgenring 62", "Wasgenring 62", "Äussere Baselstrasse 381 (Riehen)",
"Äussere Baselstrasse 381 (Riehen)", "Bäumlihofstrasse (Riehen)",
"Bäumlihofstrasse (Riehen)", "Grenzacherstrasse 511", "Grenzacherstrasse 511",
"St. Alban-Anlage 72", "St. Alban-Anlage 72"), type = c("13",
"13", "12", "12", "13", "13", "13", "13", "12", "12", "12", "12",
"13", "13", "12", "12", "14", "14", "13", "13"), source = c("bs",
"bs", "bs", "bs", "bs", "bs", "bs", "bs", "bs", "bs", "bs", "bs",
"bs", "bs", "bs", "bs", "bs", "bs", "bs", "bs"), r = c("1", "2",
"1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1",
"2", "1", "2", "1", "2"), `1` = c("0.85003673000000002", "0.84919173299999995",
"1.5073329710000001", "1.6612883949999999", "1.9605881759999999",
"1.8001595079999999", "1.8975332069999999", "1.446019935", "1.0564147239999999",
"0.87236867100000004", "0.93815149399999997", "1.1354737669999999",
"0.99779897299999998", "1.1513463319999999", "0.72833211899999994",
"1.089378559", "0.62853551200000002", "0.955223881", "1.446208113",
"0.99173553699999994"), `2` = c("0.53520831099999999", "0.54225496200000001",
"1.0456273760000001", "1.087606071", "1.5704711410000001", "1.2988492650000001",
"1.157495256", "0.92657588099999999", "0.62077978700000003",
"0.47411340800000001", "0.53277739199999996", "0.67867397500000004",
"0.58694057200000005", "0.74280408499999995", "0.38844379699999998",
"0.61896509", "0.251414205", "0.52537313399999996", "0.88183421500000003",
"0.62442607900000002"), `3` = c("0.461748347", "0.34786167400000001",
"0.77403584999999997", "0.75295804899999996", "1.1903571070000001",
"0.86589950999999998", "0.64516129", "0.61771725399999999", "0.37028969699999997",
"0.331879386", "0.32429928200000002", "0.45679979100000001",
"0.38151137200000002", "0.46425255300000001", "0.26705510999999998",
"0.396137658", "0.163419233", "0.29850746299999997", "0.59964726599999996",
"0.42240587699999999"), `4` = c("0.52471403100000003", "0.40924902800000001",
"0.62466051099999997", "0.62148918399999997", "1.050315095",
"0.67221146200000004", "0.49335863400000002", "0.56156114000000001",
"0.33761707699999999", "0.35084392199999997", "0.31271716500000002",
"0.45679979100000001", "0.35216434299999999", "0.40854224700000003",
"0.26705510999999998", "0.29710324300000002", "0.163419233",
"0.214925373", "0.47619047599999997", "0.36730945799999998"),
`5` = c("0.59817399500000001", "0.58317986499999996", "0.59750135800000004",
"0.58563403800000002", "0.99029708900000002", "0.64942463299999997",
"0.58823529399999996", "0.82830268100000004", "0.37028969699999997",
"0.65427650299999995", "0.64859856400000004", "0.77003393399999998",
"0.64563462900000002", "0.38997214499999999", "0.50983248400000003",
"0.32186184699999998", "0.414833438", "0.26268656699999998",
"0.47619047599999997", "0.42240587699999999"), `6` = c("1.122888026",
"1.432371598", "1.004888647", "1.0278474959999999", "1.1503451039999999",
"0.79753902200000004", "0.85388994299999998", "1.68468342",
"0.686125027", "1.7068082689999999", "1.274032893", "1.761942052",
"1.555392517", "0.81708449400000005", "1.723719349", "0.74275810799999997",
"1.5713387809999999", "0.93134328399999999", "0.74074074099999998",
"0.84481175399999997"), `7` = c("3.7464581799999999", "3.5297728670000001",
"3.2455187400000001", "2.8445081870000002", "2.8208462540000001",
"1.8229463370000001", "2.2580645160000001", "4.0572792360000003",
"2.6682639950000002", "5.1204248059999999", "3.1040074130000002",
"5.3771861129999996", "4.3286867200000003", "2.2841225629999999",
"4.8798252", "1.78261946", "4.9780012569999998", "2.2567164179999999",
"1.7989417990000001", "3.2323232320000002"), `8` = c("4.701437716",
"4.2766523430000003", "5.4454101030000004", "4.637265448",
"5.3315994800000004", "3.6572860889999999", "3.7950664139999999",
"5.952548084", "4.5306033540000001", "6.8367153419999998",
"5.0961315730000001", "6.3038371179999997", "6.4563462950000003",
"3.8068709379999999", "7.7688759410000001", "3.49096311",
"8.6989314899999997", "3.4388059700000002", "3.439153439",
"8.0808080810000007"), `9` = c("5.4465316399999999", "4.0515653780000003",
"5.4861488319999996", "5.3424166370000004", "5.6917075119999998",
"4.8763814520000004", "4.5540796959999996", "5.7419626560000001",
"4.6286212149999999", "6.4384600799999996", "5.5478341440000003",
"5.3249804230000004", "6.4563462950000003", "4.326833798",
"6.8220441850000002", "4.4317900469999998", "7.5675675680000003",
"4.4417910450000004", "4.2680776009999999", "9.1643709829999995"
), `10` = c("5.6774058140000001", "4.2561898920000001", "5.3231939160000001",
"5.2946097769999998", "5.3516054820000001", "4.944741939",
"4.8007590130000004", "5.7981187700000003", "4.7593116970000002",
"5.8410771859999997", "5.2582812140000001", "4.6202036020000001",
"5.3705062359999998", "4.8282265549999996", "5.8266569559999999",
"5.0507551370000003", "5.9459459460000001", "4.7164179099999997",
"4.4444444440000002", "6.299357208"), `11` = c("5.9187742679999999",
"5.2383875590000004", "5.6626833239999996", "5.677064659",
"5.6216865059999996", "5.5599863279999999", "5.4269449720000003",
"5.9946651690000001", "5.4563275969999996", "5.9927934760000001",
"5.6057447299999996", "4.9725920129999999", "5.5612619219999999",
"5.682451253", "5.8994901679999998", "5.8182718490000003",
"6.0339409179999999", "5.3850746269999998", "5.343915344",
"5.7667584940000003"), `12` = c("6.391016896", "6.1387354209999998",
"5.7577403589999996", "6.2268435520000001", "5.6817045110000004",
"6.2435912040000003", "5.8823529409999997", "6.1912115679999999",
"6.2622522329999999", "6.2582969850000003", "6.150104239",
"5.768728791", "5.9280997800000002", "6.3509749299999996",
"6.2151007529999998", "6.6105471649999998", "6.0842237590000003",
"6.2328358210000001", "6.4373897710000003", "5.7667584940000003"
), `13` = c("6.6533739110000001", "6.2819725799999997", "5.4454101030000004",
"5.9400023900000001", "5.1015304590000001", "5.93596901",
"5.8064516130000001", "5.5875333429999996", "6.1206708780000003",
"5.6229850179999996", "5.8605513089999999", "5.6382145650000002",
"5.7079970649999998", "6.5181058500000004", "5.753823744",
"6.5362713540000001", "5.6065367689999999", "6.6626865669999997",
"6.331569665", "5.1974288340000001"), `14` = c("6.8422709619999997",
"6.813996317", "6.3145029880000001", "5.8921955300000004",
"6.1118335500000001", "5.9131821809999998", "5.920303605",
"6.2473676820000001", "6.2295796120000002", "6.7324103930000003",
"6.5323141070000004", "5.8470373269999998", "6.2949376380000004",
"6.4252553389999996", "6.3850449139999998", "6.2391681109999997",
"6.599622879", "6.1492537309999999", "5.9082892420000004",
"6.574839302"), `15` = c("7.3145135899999998", "6.6809903830000001",
"6.6539923950000004", "6.5853950040000004", "6.3018905670000001",
"6.6309673010000001", "6.451612903", "6.4860311670000002",
"6.6325419300000004", "6.6565522469999996", "6.81028492",
"5.8992430169999999", "6.7644900950000002", "6.9637883010000001",
"6.7006554989999998", "6.981926219", "6.6499057199999996",
"6.7104477610000002", "6.4197530860000001", "6.4279155189999999"
), `16` = c("7.1361108199999999", "7.4176386330000001", "6.5996740899999997",
"6.6451535799999997", "6.33189957", "6.7676882760000003",
"6.6034155600000002", "6.4158360239999999", "6.8285776519999999",
"6.3910487390000004", "6.7523743339999998", "6.2385800050000002",
"6.8378576669999998", "6.9823584030000001", "6.6035445499999996",
"6.9076504090000004", "6.7881835319999997", "6.8776119400000004",
"6.8077601410000002", "6.1157024790000003"), `17` = c("7.2620421869999996",
"8.5635359120000007", "7.1292775669999999", "7.5176287799999999",
"6.5019505850000003", "7.4740799820000001", "7.3244781779999997",
"6.5843043659999996", "8.1245915919999998", "6.6849990520000002",
"8.4433634469999994", "7.0347167839999996", "7.1606749819999997",
"7.8737233050000004", "6.8220441850000002", "8.1703391930000002",
"7.2030169700000002", "8.3940298510000009", "8.2716049379999994",
"6.5197428830000002"), `18` = c("7.3984678349999999", "8.3179864949999995",
"7.305812059", "7.4100633440000001", "6.6119835949999999",
"8.089324371", "7.9506641370000004", "6.7527727080000002",
"8.5928991509999992", "6.6944813200000004", "8.6518415569999991",
"7.3610023489999996", "6.6764490099999998", "8.4493964720000001",
"6.6763777620000004", "9.2597177520000002", "6.5870521679999996",
"9.8029850750000005", "9.9470899470000003", "6.8319559229999998"
), `19` = c("6.8002938400000001", "7.0493145080000001", "6.5046170559999998",
"6.4658778530000003", "6.2118635590000002", "7.4285063229999997",
"7.5332068310000002", "5.9806261410000001", "7.9721193640000001",
"6.0496870850000004", "6.9840166779999997", "6.9694596710000001",
"6.0308143799999998", "8.0408542250000004", "5.9480456420000003",
"8.5169596429999999", "5.7825267130000002", "9.0507462689999993",
"8.3421516750000002", "6.2075298439999997"), `20` = c("5.1317032219999996",
"5.6374053609999999", "5.1738185769999996", "5.1392374810000003",
"5.0715214560000001", "5.411871938", "5.9392789370000001",
"4.7592306610000001", "5.8592899149999997", "4.5989000569999998",
"4.89923558", "5.4815974939999998", "4.8422597209999996",
"5.9424326829999998", "4.5399368779999998", "5.7687546420000002",
"4.4626021370000002", "5.755223881", "5.4673721339999997",
"4.775022957"), `21` = c("3.431629762", "4.7472887249999998",
"3.9244975559999999", "4.003824549", "3.9611883570000002",
"4.1358095019999999", "4.3643263760000002", "3.608030324",
"4.2147680239999996", "3.252417978", "3.5093815149999998",
"3.9937353170000001", "3.6537050619999998", "3.9554317550000002",
"3.083272639", "3.6642733349999999", "2.853551226", "3.665671642",
"3.8624338620000001", "3.287419651"), `22` = c("2.529121629",
"2.895436873", "3.1233025529999998", "3.2389147839999999",
"3.3610083020000001", "3.2699099920000001", "3.4535104360000002",
"3.0183911270000001", "3.103898933", "2.6645173529999999",
"2.6638869590000001", "3.093187157", "2.9933969189999998",
"2.9340761369999999", "2.5734401550000001", "2.7234463980000001",
"2.1244500309999998", "2.7701492540000001", "3.0511463839999999",
"2.387511478"), `23` = c("2.1723160880000001", "2.568037651",
"3.0961433999999999", "2.9640253379999999", "3.3410023010000001",
"3.1901560899999999", "3.548387097", "2.7095324999999999",
"2.7553909820000002", "2.2757443579999999", "2.4785730830000001",
"2.8321587049999999", "2.7439471750000002", "2.7112349120000001",
"2.2335518329999999", "2.7482050010000001", "1.8101822750000001",
"2.7104477610000002", "2.980599647", "2.1671258029999998"
), `24` = c("1.3537622", "1.370984244", "2.2542096690000002",
"2.4381498750000001", "2.6808042410000001", "2.5635182859999999",
"2.7514231499999999", "2.0496981609999998", "1.818775866",
"1.498198369", "1.62149641", "1.983816236", "1.672780631",
"1.9498607240000001", "1.383831027", "1.8321366670000001",
"1.03079824", "1.7910447759999999", "2.2574955910000001",
"1.5243342520000001")), row.names = c("X2", "X3", "X4", "X5",
"X6", "X7", "X8", "X9", "X10", "X11", "X12", "X13", "X14", "X15",
"X16", "X17", "X18", "X19", "X20", "X21"), class = "data.frame")
解决方案
编辑:我错过了另一个答案......这基本上是一样的,只是使用 base-R 而不是 tidyverse 函数
我是否理解正确,您想要每小时方向之间的差异?如果是这样,您可以执行以下操作。“dat”是我给你的数据结构起的名字。
#change traffic values from character to numeric
dat[,5:28] <- apply(dat[,5:28], 2, as.numeric)
#create new data frame with difference values between r = 1 and r = 2 per hour
xdat <- cbind(dat[dat$r == 1, 1:3],
dat[dat$r == 1, 5:28] - dat[dat$r == 2, 5:28])
#reshape hours to long format
xdat <- reshape(data = xdat, direction = "long",
idvar = c("id", "type", "source"),
timevar = "hour", varying = 4:27,
v.names = "trafficDiff",
times = colnames(xdat)[4:27])
rownames(xdat) = NULL
#restrict to difference values >= 2
xdat[abs(xdat$trafficDiff) >= 2,]
id type source hour trafficDiff
65 Dorenbachviadukt 12 bs 7 -2.452161
66 Wasgenring 62 12 bs 7 -2.273179
67 Äussere Baselstrasse 381 (Riehen) 13 bs 7 2.044564
68 Bäumlihofstrasse (Riehen) 12 bs 7 3.097206
69 Grenzacherstrasse 511 14 bs 7 2.721285
74 Viaduktstrasse 60 (Rialto) 13 bs 8 -2.157482
75 Dorenbachviadukt 12 bs 8 -2.306112
77 Äussere Baselstrasse 381 (Riehen) 13 bs 8 2.649475
78 Bäumlihofstrasse (Riehen) 12 bs 8 4.277913
79 Grenzacherstrasse 511 14 bs 8 5.260126
80 St. Alban-Anlage 72 13 bs 8 -4.641655
87 Äussere Baselstrasse 381 (Riehen) 13 bs 9 2.129512
88 Bäumlihofstrasse (Riehen) 12 bs 9 2.390254
89 Grenzacherstrasse 511 14 bs 9 3.125777
90 St. Alban-Anlage 72 13 bs 9 -4.896293
178 Bäumlihofstrasse (Riehen) 12 bs 18 -2.583340
179 Grenzacherstrasse 511 14 bs 18 -3.215933
180 St. Alban-Anlage 72 13 bs 18 3.115134
187 Äussere Baselstrasse 381 (Riehen) 13 bs 19 -2.010040
188 Bäumlihofstrasse (Riehen) 12 bs 19 -2.568914
189 Grenzacherstrasse 511 14 bs 19 -3.268220
190 St. Alban-Anlage 72 13 bs 19 2.134622
推荐阅读
- java - 我可以将列表作为参数传递给 Scala/Java 中以这种方式定义的方法 detectFormatAutomatically(delimitersForDetection:Char*)
- python - 尝试在 Python 中构建一个简单的计算器无法在数学符号之间进行迭代
- google-cloud-firestore - Firestore 安全规则 - 通配符集合名称?
- javascript - 如何在下拉列表中获取除隐藏和提交按钮之外的所有表单字段
- groovy - Groovy AST 方法调用表达式的目标方法未设置
- sql-server - 根据该行中的值填充行
- javascript - 需要优雅的方式从 Javascript 中的 json 映射中提取值作为字符串
- javascript - 与在 Angular6 中将组件添加到另一个组件相关的问题
- jquery - 对 jquery 加载和直接链接到 html 页面使用相对路径
- ssl - 在 Java 中设置 TLS 扩展(例如trusted_ca_keys)