[R] Hot Air Balloon Weather Briefings

Rasmus Liland jr@| @end|ng |rom po@teo@no
Sat Aug 15 00:21:35 CEST 2020


On 2020-08-14 13:58 -0700, Philip wrote:
| I’m trying to compare National Weather 
| Service Rapid Update Forecast (RAP) 
| data to GPS breadcrumbs collected by a 
| really clever Apple Phone Ap that lays 
| down longitude, latitude, altitude, 
| compass direction, and speed every six 
| seconds.   Below is a small subset of 
| the GPS data from another flight.  
| 
| I want to delete the rows where the 
| balloon does not move (Speed column) 
| for a full minute assuming that it is 
| sitting on the ground – beginning of 
| the flight, changing passengers, or 
| waiting for the chase crew at the end 
| of the flight.  for example, I want to 
| eliminate the data for minute 30 but 
| keep the data for minute 31 because 
| the balloon starts to move again at 
| second 17.  Any suggestions?  I’ve 
| tried putzing around with multiple 
| lags without success.
| 
| 	Minute Second Speed 
| 	[...]
| 
| It would be even better if I could 
| delete the rows where there were ten 
| consecutive zero speed entries such as 
| from minute 30 second 17 to minute 31 
| second 11.

Dear Philip,

first I though about solving this using 
some combination of unique, duplicated, 
table ... then I saw Jim's reply, and 
rewrote it a little:

	rap <-
	structure(list(Minute = c(29L, 29L, 29L,
	30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
	30L, 30L, 31L, 31L, 31L, 31L, 31L, 31L, 
	31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 
	31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 
	31L, 31L, 31L, 31L, 31L, 31L, 32L), 
	Second = c(47L, 53L, 59L, 5L, 11L, 17L, 
	23L, 29L, 35L, 41L, 47L, 53L, 59L, 5L, 
	11L, 17L, 23L, 29L, 35L, 41L, 43L, 43L, 
	43L, 43L, 43L, 43L, 43L, 43L, 43L, 43L, 
	43L, 43L, 47L, 53L, 54L, 54L, 54L, 54L, 
	54L, 54L, 59L, 5L), 
	Speed = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0.402649, 0.671081, 
	1.588225, 2.438261, 2.706693, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 0, 2.930386, 
	3.310666, 0, 0, 0, 0, 0, 0, 3.198819, 
	3.422512)), class = "data.frame", 
	row.names = c(NA, -42L))
	
	minis <- unique(rap$Minute)
	FUN <- function(mini, rap) {
	  all(rap$Speed[rap$Minute==mini]==0) }
	keep <- rap$Minute %in%
	  minis[!simplify2array(
	    parallel::mclapply(minis, FUN, rap))]
	rap[keep,]

As to Bert's reply, I am a loss as how 
to use the lengths list in 
rle(rap$Speed) for this ...

Best,
Rasmus

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20200815/b24cec39/attachment.sig>


More information about the R-help mailing list