[R] [External] sort
Richard M. Heiberger
rmh @end|ng |rom temp|e@edu
Fri May 15 05:38:14 CEST 2020
## the data you gave us
DF1 <- read.table(text="name ddate
A 2019-10-28
A 2018-01-25
A 2020-01-12
A 2017-10-20
B 2020-11-20
B 2019-10-20
B 2017-05-20
B 2020-01-20
c 2009-10-01 ",
header=TRUE, colClasses=c("character", "POSIXct"))
DF1
D2 <- split(DF1, DF1$name)
D2
sapply(D2, function(x) {
DD <- c(sort(x$ddate, decreasing=TRUE), min(x$ddate))
DD[1]-DD[2]
})
## the data that your intended answer is based on
DF1 <- read.table(text="name ddate
A 2019-01-12 ## intended value
A 2018-01-25
A 2020-01-12
A 2017-10-20
B 2020-11-20
B 2019-10-20
B 2017-05-20
B 2020-01-20
c 2009-10-01 ",
header=TRUE, colClasses=c("character", "POSIXct"))
DF1
D2 <- split(DF1, DF1$name)
D2
sapply(D2, function(x) {
DD <- c(sort(x$ddate, decreasing=TRUE), min(x$ddate))
DD[1]-DD[2]
})
On Thu, May 14, 2020 at 11:00 PM Val <valkremk using gmail.com> wrote:
> HI All,
> I have a sample of data frame
> DF1<-read.table(text="name ddate
> A 2019-10-28
> A 2018-01-25
> A 2020-01-12
> A 2017-10-20
> B 2020-11-20
> B 2019-10-20
> B 2017-05-20
> B 2020-01-20
> c 2009-10-01 ",header=TRUE)
>
> 1. I want sort by name and ddate on decreasing order and the output
> should like as follow
> A 2020-01-12
> A 2019-01-12
> A 2018-01-25
> A 2017-10-20
> B 2020-11-21
> B 2020-11-01
> B 2019-10-20
> B 2017-05-20
> c 2009-10-01
>
> 2. Take the top two rows by group( names) and the out put should like
> A 2020-01-12
> A 2019-01-12
> B 2020-11-21
> B 2020-11-01
> c 2009-10-01
>
> 3. Within each group (name) get the date difference between the
> first and second rows dates. If a group has only one row then the
> difference should be 0
>
> The final out put is
> Name diff
> A 365
> B 20
> C 0
>
> Here is my attempt and have an issue at the sorting
> DF1$DTime <- as.POSIXct(DF1$ddate , format = "%Y-%m-%d")
> DF2 <- DF1[order(DF1$name, ((as.Date(DF1$DTime, decreasing = TRUE)))), ]
>
> not working
> Any help?
>
> Thank you
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>
[[alternative HTML version deleted]]
More information about the R-help
mailing list