Dear knowing people,
I have a data frame like this.
exdatframe <-
data.frame(Name=c("Ernie","Ernie","Ernie",
"CookieMonster","CookieMonster","CookieMonster"),
recordedTime=as.POSIXct(strptime(as.character("01.01.2017","02.01.2011","03.01.2011",
"01.01.2011","02.01.2011","03.01.2011"),"%d.%m.%Y")),
week =c(1,2,2,
1,2,2),
eatencookies=c(1,0.5,0.001,
50,51,200))
exdatframe
#Now I want a new dataframe with only the first row per week (i.e. I
want to know how many cookies were eaten at the first recorded day of
each week). Something like that:
exdatframe2 <- data.frame(Name=c("Ernie","Ernie",
"CookieMonster","CookieMonster"),
recordedTime=c("01.01.2017","02.01.2011",
"01.01.2011","02.01.2011"),
week =c(1,2,
1,2),
eatencookies=c(1,0.5,
50,51))
exdatframe2
# How do I do that? I thought it must be something with tapply or subset
- but I just don't get it....
# would be great if someone helps.
# Dagmar
Bert Gunter
2017-Feb-02 21:15 UTC
[R] beginner question: subset first entry (row) per week
new.df <- orig.df[!duplicated(df[["week"]]), ] See ?duplicated -- Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Thu, Feb 2, 2017 at 1:04 PM, Dagmar <Ramgad82 at gmx.net> wrote:> Dear knowing people, > > I have a data frame like this. > > exdatframe <- data.frame(Name=c("Ernie","Ernie","Ernie", > "CookieMonster","CookieMonster","CookieMonster"), > recordedTime=as.POSIXct(strptime(as.character("01.01.2017","02.01.2011","03.01.2011", > "01.01.2011","02.01.2011","03.01.2011"),"%d.%m.%Y")), > week =c(1,2,2, > 1,2,2), > eatencookies=c(1,0.5,0.001, > 50,51,200)) > exdatframe > > #Now I want a new dataframe with only the first row per week (i.e. I want to > know how many cookies were eaten at the first recorded day of each week). > Something like that: > > exdatframe2 <- data.frame(Name=c("Ernie","Ernie", > "CookieMonster","CookieMonster"), > recordedTime=c("01.01.2017","02.01.2011", > "01.01.2011","02.01.2011"), > week =c(1,2, > 1,2), > eatencookies=c(1,0.5, > 50,51)) > exdatframe2 > > # How do I do that? I thought it must be something with tapply or subset - > but I just don't get it.... > > # would be great if someone helps. > > # Dagmar > > ______________________________________________ > R-help at 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.
Dagmar
2017-Feb-03 08:05 UTC
[R] beginner question: subset first entry (row) per week - found the answer myself :-)
Dear all, Now, all the sudden I found the answer myself :-) I did it by: ddply(exdatframe,.(week),function(x) head(x,1)) I'll simply do it for Ernie and Cookiemonster seperate - that is not a big problem. Thanks anyway for your engagement in this group! Dagmar Am 02.02.2017 um 22:04 schrieb Dagmar:> Dear knowing people, > > I have a data frame like this. > > exdatframe <- data.frame(Name=c("Ernie","Ernie","Ernie", > "CookieMonster","CookieMonster","CookieMonster"), > recordedTime=as.POSIXct(strptime(as.character("01.01.2017","02.01.2011","03.01.2011", > > "01.01.2011","02.01.2011","03.01.2011"),"%d.%m.%Y")), > week =c(1,2,2, > 1,2,2), > eatencookies=c(1,0.5,0.001, > 50,51,200)) > exdatframe > > #Now I want a new dataframe with only the first row per week (i.e. I > want to know how many cookies were eaten at the first recorded day of > each week). Something like that: > > exdatframe2 <- data.frame(Name=c("Ernie","Ernie", > "CookieMonster","CookieMonster"), > recordedTime=c("01.01.2017","02.01.2011", > "01.01.2011","02.01.2011"), > week =c(1,2, > 1,2), > eatencookies=c(1,0.5, > 50,51)) > exdatframe2 > > # How do I do that? I thought it must be something with tapply or > subset - but I just don't get it.... > > # would be great if someone helps. > > # Dagmar > >