[R] How to write a loop in which i has to be in POSIX format?

Tom Wright tom at maladmin.com
Fri May 9 23:02:32 CEST 2014


i is an element in zn so replace zn[i] with just i
for (i in zn){
     treat$su[treat$Zugnacht==as.POSIXct(i, "UTC")] <-
 min(treat$Vollzeit[treat$Zugnacht==as.POSIXct(zni, "UTC")])
     treat$sa[treat$Zugnacht==as.POSIXct(zni, "UTC")] <-
 max(treat$Vollzeit[treat$Zugnacht==as.POSIXct(zni, "UTC")])
     }


If you want to keep i as an index you need something like:
for(i in 1:length(i))
	{
	#do stuff on zn[i]
	}


On Thu, 2014-05-08 at 14:19 -0700, peregrine wrote:
> Hallo,
> 
> I have a table in which I would like to insert the min and max values of
> another column (date and time in as.POSIXct Format).
> 
> This is my row table, where "su" and "sa" are still the same as "Vollzeit":
> 
> head(treat)
>              Vollzeit      Datum   Zugnacht                  su                 
> sa
> 2 2013-09-09 20:15:00 2013-09-09 2013-09-09 2013-09-09 20:15:00 2013-09-09
> 20:15:00
> 3 2013-09-09 20:30:00 2013-09-09 2013-09-09 2013-09-09 20:30:00 2013-09-09
> 20:30:00
> 4 2013-09-09 20:45:00 2013-09-09 2013-09-09 2013-09-09 20:45:00 2013-09-09
> 20:45:00
> 5 2013-09-09 21:00:00 2013-09-09 2013-09-09 2013-09-09 21:00:00 2013-09-09
> 21:00:00
> 6 2013-09-09 21:15:00 2013-09-09 2013-09-09 2013-09-09 21:15:00 2013-09-09
> 21:15:00
> 7 2013-09-09 21:30:00 2013-09-09 2013-09-09 2013-09-09 21:30:00 2013-09-09
> 21:30:00
> 
> Now I want to insert the minimum value of "Vollzeit" for each date in
> "Zugnacht" into the column "su" and the maximum value of "Vollzeit" for each
> date in "Zugnacht" into the column "sa". If I do it like this, it does
> exactly what I want:
> 
> zn                   <- unique(treat$Zugnacht)
> i=zn[1]
> treat$su[treat$Zugnacht==as.POSIXct(i, "UTC")] <-
> min(treat$Vollzeit[treat$Zugnacht==as.POSIXct(i, "UTC")])
> treat$sa[treat$Zugnacht==as.POSIXct(i, "UTC")] <-
> max(treat$Vollzeit[treat$Zugnacht==as.POSIXct(i, "UTC")])
> 
> This is the result for the first date in "Zugnacht":
> head(treat)
>              Vollzeit      Datum   Zugnacht                  su                 
> sa
> 2 2013-09-09 20:15:00 2013-09-09 2013-09-09 2013-09-09 20:15:00 2013-09-10
> 04:30:00
> 3 2013-09-09 20:30:00 2013-09-09 2013-09-09 2013-09-09 20:15:00 2013-09-10
> 04:30:00
> 4 2013-09-09 20:45:00 2013-09-09 2013-09-09 2013-09-09 20:15:00 2013-09-10
> 04:30:00
> 5 2013-09-09 21:00:00 2013-09-09 2013-09-09 2013-09-09 20:15:00 2013-09-10
> 04:30:00
> 6 2013-09-09 21:15:00 2013-09-09 2013-09-09 2013-09-09 20:15:00 2013-09-10
> 04:30:00
> 7 2013-09-09 21:30:00 2013-09-09 2013-09-09 2013-09-09 20:15:00 2013-09-10
> 04:30:00
> 
> 
> However I am not able to create a loop that runs over all 113 dates in zn. I
> tried this, but it does not work. Can anybody help, please?
> 
> for (i in zn){
>     treat$su[treat$Zugnacht==as.POSIXct(zn[i], "UTC")] <-
> min(treat$Vollzeit[treat$Zugnacht==as.POSIXct(zn[i], "UTC")])
>     treat$sa[treat$Zugnacht==as.POSIXct(zn[i], "UTC")] <-
> max(treat$Vollzeit[treat$Zugnacht==as.POSIXct(zn[i], "UTC")])
>     }
> 
> Kind regards
> Christiane
> 
> 
> 
> 
> --
> View this message in context: http://r.789695.n4.nabble.com/How-to-write-a-loop-in-which-i-has-to-be-in-POSIX-format-tp4690212.html
> Sent from the R help mailing list archive at Nabble.com.
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list