Here is a low code version of Steve's function that deals with your incoming data strings.
[{"id":"92d51f946870c4f4","type":"inject","z":"d1395164b4eec73e","name":"Device SensorData","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"device1/sensordata","payload":"80","payloadType":"str","x":170,"y":6640,"wires":[["4ea745b6215aa849"]]},{"id":"4ea745b6215aa849","type":"change","z":"d1395164b4eec73e","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"$split($$.topic, \"/\")","tot":"jsonata","dc":true},{"t":"move","p":"topic[0]","pt":"msg","to":"device","tot":"msg"},{"t":"move","p":"topic[0]","pt":"msg","to":"topic","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":6760,"wires":[["18816f75ffe05762"]]},{"id":"2ff2bd9110b624e2","type":"inject","z":"d1395164b4eec73e","name":"Device SensorData","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"device2/sensordata","payload":"85","payloadType":"str","x":170,"y":6680,"wires":[["4ea745b6215aa849"]]},{"id":"274cc3e95be6654b","type":"inject","z":"d1395164b4eec73e","name":"Device GPSData","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"device1/GPS","payload":"lat,N,long,W","payloadType":"str","x":180,"y":6720,"wires":[["4ea745b6215aa849"]]},{"id":"5fecee8a40b7953b","type":"inject","z":"d1395164b4eec73e","name":"Device GPSData","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"device2/GPS","payload":"lat,N,long,W","payloadType":"str","x":180,"y":6760,"wires":[["4ea745b6215aa849"]]},{"id":"18816f75ffe05762","type":"switch","z":"d1395164b4eec73e","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"sensordata","vt":"str"},{"t":"eq","v":"GPS","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":550,"y":6760,"wires":[["8b7ffdf72914dc50"],["a903c0fed6559cb1"]]},{"id":"8b7ffdf72914dc50","type":"change","z":"d1395164b4eec73e","name":"","rules":[{"t":"set","p":"data[msg.device][msg.topic]","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":770,"y":6740,"wires":[["3641068119d446b6"]]},{"id":"a903c0fed6559cb1","type":"change","z":"d1395164b4eec73e","name":"","rules":[{"t":"set","p":"data[msg.device][msg.topic]","pt":"flow","to":"(\t $values := $split($$.payload, \",\").$trim($);\t {\t \"lat\": $values[0] & \" \" & $values[1],\t \"lon\": $values[2] & \" \" & $values[3]\t }\t)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":770,"y":6780,"wires":[["3641068119d446b6"]]},{"id":"3641068119d446b6","type":"switch","z":"d1395164b4eec73e","name":"","property":"$count($flowContext(\"data.\" & $$.device).*)","propertyType":"jsonata","rules":[{"t":"eq","v":"2","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":990,"y":6760,"wires":[["a9ede7b319b7b78e"]]},{"id":"a9ede7b319b7b78e","type":"change","z":"d1395164b4eec73e","name":"","rules":[{"t":"move","p":"data[msg.device]","pt":"flow","to":"payload","tot":"msg"},{"t":"move","p":"device","pt":"msg","to":"payload.device","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1140,"y":6760,"wires":[["046b9cccacad7df7"]]},{"id":"046b9cccacad7df7","type":"debug","z":"d1395164b4eec73e","name":"debug 15","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":880,"y":6840,"wires":[]}]
Outputs when ever two (GPS, sensordata) values have been received for a device.
Output
{
"sensordata":"80",
"GPS":{
"lat":"lat N",
"lon":"long W"
},
"device":"device1"
}