Dear Sarah, (dear All),
Thank you for trying to help! You are right, that I want to add a column
to my dataframe with a corresponding value to the Hunger column.
Your solution is basically correct in the result but my data are a
little more complicated. Maybe that example describes it better:
myframe <- data.frame (ID=c("Ernie", "Ernie",
"Ernie", "Bert",
"Bert","Bert", "Duck"),
Hunger=c(1.2,1.3,1.1,2.1,2.2,1.4,3.3) )
myframe
# Now I want to add a column which says "hunger" for values between
1.0 - 2;
#"big Hunger" for >2 $ <=3, "very big Hunger" for
>3
# so that the result looks somewhat like that:
myframeresult <- data.frame (ID=c("Ernie", "Ernie",
"Ernie", "Bert",
"Bert","Bert", "Duck"),
Hunger=c(1.2,1.3,1.1,2.1,2.2,1.4,3.3),Hungertype
=c("Hunger", "Hunger", "Hunger",
"bigHunger", "bigHunger",
"Hunger","verybigHunger" ) )
myframeresult
Does anyone know the solution?
Thanks in advance for trying,
Dagmar
Am 28.10.2015 um 20:54 schrieb Sarah Goslee:> If I'm reading this correctly, you want to add a column to your
> dataframe with a name corresponding to the value in the Hunger column.
>
> myframe <- data.frame (ID=c("Ernie", "Ernie",
"Ernie", "Bert",
> "Bert","Bert", "Duck"),
Hunger=c(1,1,1,2,2,1,3) )
>
> myframe$Hungertype <- c("none", "bighunger",
"verybighunger")[myframe$Hunger]
>
> ID Hunger Hungertype
> 1 Ernie 1 none
> 2 Ernie 1 none
> 3 Ernie 1 none
> 4 Bert 2 bighunger
> 5 Bert 2 bighunger
> 6 Bert 1 none
> 7 Duck 3 verybighunger
>
> Then you can subset it to remove low values, sort it, etc.
>
> On Wed, Oct 28, 2015 at 8:20 AM, Dagmar Cimiotti <dagmar.cimiotti at
gmx.de> wrote:
>> Hello,
>> It must be very easy.
>>
>> I have data like this:
>> myframe <- data.frame (ID=c("Ernie", "Ernie",
"Ernie", "Bert",
>> "Bert","Bert", "Duck"),
Hunger=c(1,1,1,2,2,1,3) )
>> myframe
>> bighunger <- subset (myframe, myframe$Hunger>=2
&myframe$Hunger <3 )
>> bighunger
>> verybighunger <- subset(myframe,myframe$Hunger>=3)
>> verybighunger
>> hungry <- rbind (bighunger=bighunger,very=verybighunger)
>> hungry
>>
>> BUT I want a result like this:
>> myframesresult <-
data.frame(Hunger=c("bighunger","bighunger","very"),
>> ID=c("Bert", "Bert", "duck"),
Hunger=c(2,2,3))
>> myframesresult
>>
>> Where is my mistake?
>> Very many thanks in advance!!
>> Dagmar
ruipbarradas at sapo.pt
2015-Oct-29 07:38 UTC
[R] rbind - names in dataframe. Beginner Question
Hello, Try the following. newframe <- myframe newframe$Hungertype <- with(myframe, ifelse(Hunger <= 1, NA, ?? ??? ??? ??? ??? ??? ??? ?ifelse(1 < Hunger & Hunger <= 2, "Hunger", ?? ??? ??? ??? ??? ??? ??? ?ifelse(Hunger < 3, "bigHUnger", "verybigHunger") ))) Note that the new column is of type character but that in your example myframeresult it is of type factor. Hope this helps, Rui Barradas ? Citando Dagmar <Ramgad82 at gmx.net>:> Dear Sarah, (dear All), > Thank you for trying to help! You are right, that I want to add a column > to my dataframe with a corresponding value to the Hunger column. > Your solution is basically correct in the result but my data are a > little more complicated. Maybe that example describes it better: > > myframe <- data.frame (ID=c("Ernie", "Ernie", "Ernie", "Bert", > "Bert","Bert", "Duck"), Hunger=c(1.2,1.3,1.1,2.1,2.2,1.4,3.3) ) > myframe > > # Now I want to add a column which says "hunger" for values between 1.0 > - 2; > #"big Hunger" for >2 $ <=3, "very big Hunger" for >3 > # so that the result looks somewhat like that: > myframeresult <- data.frame (ID=c("Ernie", "Ernie", "Ernie", "Bert", > "Bert","Bert", "Duck"), Hunger=c(1.2,1.3,1.1,2.1,2.2,1.4,3.3),Hungertype > =c("Hunger", "Hunger", "Hunger", "bigHunger", "bigHunger", > "Hunger","verybigHunger" ) ) > myframeresult > > Does anyone know the solution? > Thanks in advance for trying, > Dagmar > > Am 28.10.2015 um 20:54 schrieb Sarah Goslee: >> If I'm reading this correctly, you want to add a column to your >> dataframe with a name corresponding to the value in the Hunger column. >> >> myframe <- data.frame (ID=c("Ernie", "Ernie", "Ernie", "Bert", >> "Bert","Bert", "Duck"), Hunger=c(1,1,1,2,2,1,3) ) >> >> myframe$Hungertype <- c("none", "bighunger", >> "verybighunger")[myframe$Hunger] >> >> ? ? ?ID Hunger? ? Hungertype >> 1 Ernie? ? ? 1? ? ? ? ? none >> 2 Ernie? ? ? 1? ? ? ? ? none >> 3 Ernie? ? ? 1? ? ? ? ? none >> 4? Bert? ? ? 2? ? ?bighunger >> 5? Bert? ? ? 2? ? ?bighunger >> 6? Bert? ? ? 1? ? ? ? ? none >> 7? Duck? ? ? 3 verybighunger >> >> Then you can subset it to remove low values, sort it, etc. >> >> On Wed, Oct 28, 2015 at 8:20 AM, Dagmar Cimiotti >> <dagmar.cimiotti at gmx.de> wrote: >>> Hello, >>> It must be very easy. >>> >>> I have data like this: >>> myframe <- data.frame (ID=c("Ernie", "Ernie", "Ernie", "Bert", >>> "Bert","Bert", "Duck"), Hunger=c(1,1,1,2,2,1,3) ) >>> myframe >>> bighunger <- subset (myframe, myframe$Hunger>=2 &myframe$Hunger <3 ) >>> bighunger >>> verybighunger <- subset(myframe,myframe$Hunger>=3) >>> verybighunger >>> hungry <- rbind (bighunger=bighunger,very=verybighunger) >>> hungry >>> >>> BUT I want a result like this: >>> myframesresult <- data.frame(Hunger=c("bighunger","bighunger","very"), >>> ID=c("Bert", "Bert", "duck"), Hunger=c(2,2,3)) >>> myframesresult >>> >>> Where is my mistake? >>> Very many thanks in advance!! >>> 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.htmland provide commented, > minimal, self-contained, reproducible code.? [[alternative HTML version deleted]]
Hello, Sarah, take a look at the online help page of the function cut() (and apply the function to the Hunger-column). Hth -- Gerrit On Thu, 29 Oct 2015, Dagmar wrote:> Dear Sarah, (dear All), > Thank you for trying to help! You are right, that I want to add a column to > my dataframe with a corresponding value to the Hunger column. > Your solution is basically correct in the result but my data are a little > more complicated. Maybe that example describes it better: > > myframe <- data.frame (ID=c("Ernie", "Ernie", "Ernie", "Bert", > "Bert","Bert", "Duck"), Hunger=c(1.2,1.3,1.1,2.1,2.2,1.4,3.3) ) > myframe > > # Now I want to add a column which says "hunger" for values between 1.0 - 2; > #"big Hunger" for >2 $ <=3, "very big Hunger" for >3 > # so that the result looks somewhat like that: > myframeresult <- data.frame (ID=c("Ernie", "Ernie", "Ernie", "Bert", > "Bert","Bert", "Duck"), Hunger=c(1.2,1.3,1.1,2.1,2.2,1.4,3.3),Hungertype > =c("Hunger", "Hunger", "Hunger", "bigHunger", "bigHunger", > "Hunger","verybigHunger" ) ) > myframeresult > > Does anyone know the solution? > Thanks in advance for trying, > Dagmar > > > Am 28.10.2015 um 20:54 schrieb Sarah Goslee: >> If I'm reading this correctly, you want to add a column to your >> dataframe with a name corresponding to the value in the Hunger column. >> >> myframe <- data.frame (ID=c("Ernie", "Ernie", "Ernie", "Bert", >> "Bert","Bert", "Duck"), Hunger=c(1,1,1,2,2,1,3) ) >> >> myframe$Hungertype <- c("none", "bighunger", >> "verybighunger")[myframe$Hunger] >> >> ID Hunger Hungertype >> 1 Ernie 1 none >> 2 Ernie 1 none >> 3 Ernie 1 none >> 4 Bert 2 bighunger >> 5 Bert 2 bighunger >> 6 Bert 1 none >> 7 Duck 3 verybighunger >> >> Then you can subset it to remove low values, sort it, etc. >> >> On Wed, Oct 28, 2015 at 8:20 AM, Dagmar Cimiotti <dagmar.cimiotti at gmx.de> >> wrote: >>> Hello, >>> It must be very easy. >>> >>> I have data like this: >>> myframe <- data.frame (ID=c("Ernie", "Ernie", "Ernie", "Bert", >>> "Bert","Bert", "Duck"), Hunger=c(1,1,1,2,2,1,3) ) >>> myframe >>> bighunger <- subset (myframe, myframe$Hunger>=2 &myframe$Hunger <3 ) >>> bighunger >>> verybighunger <- subset(myframe,myframe$Hunger>=3) >>> verybighunger >>> hungry <- rbind (bighunger=bighunger,very=verybighunger) >>> hungry >>> >>> BUT I want a result like this: >>> myframesresult <- data.frame(Hunger=c("bighunger","bighunger","very"), >>> ID=c("Bert", "Bert", "duck"), Hunger=c(2,2,3)) >>> myframesresult >>> >>> Where is my mistake? >>> Very many thanks in advance!! >>> 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.
Hello Rui and Gerrit and Sarah, Thank you very much for your help. I finally got it to work! Have a great day! Dagmar Am 29.10.2015 um 08:38 schrieb ruipbarradas at sapo.pt:> > Hello, > > Try the following. > > > newframe <- myframe > newframe$Hungertype <- with(myframe, ifelse(Hunger <= 1, NA, > ifelse(1 < Hunger & Hunger <= 2, "Hunger", > ifelse(Hunger < 3, "bigHUnger", > "verybigHunger") ))) > > > Note that the new column is of type character but that in your example > myframeresult it is of type factor. > > Hope this helps, > > Rui Barradas > > Citando Dagmar <Ramgad82 at gmx.net <mailto:Ramgad82 at gmx.net>>: > >> Dear Sarah, (dear All), >> Thank you for trying to help! You are right, that I want to add a >> column to my dataframe with a corresponding value to the Hunger column. >> Your solution is basically correct in the result but my data are a >> little more complicated. Maybe that example describes it better: >> >> myframe <- data.frame (ID=c("Ernie", "Ernie", "Ernie", "Bert", >> "Bert","Bert", "Duck"), Hunger=c(1.2,1.3,1.1,2.1,2.2,1.4,3.3) ) >> myframe >> >> # Now I want to add a column which says "hunger" for values between >> 1.0 - 2; >> #"big Hunger" for >2 $ <=3, "very big Hunger" for >3 >> # so that the result looks somewhat like that: >> myframeresult <- data.frame (ID=c("Ernie", "Ernie", "Ernie", "Bert", >> "Bert","Bert", "Duck"), >> Hunger=c(1.2,1.3,1.1,2.1,2.2,1.4,3.3),Hungertype =c("Hunger", >> "Hunger", "Hunger", "bigHunger", "bigHunger", >> "Hunger","verybigHunger" ) ) >> myframeresult >> >> Does anyone know the solution? >> Thanks in advance for trying, >> Dagmar >> >> >> Am 28.10.2015 um 20:54 schrieb Sarah Goslee: >> >>> If I'm reading this correctly, you want to add a column to your >>> dataframe with a name corresponding to the value in the Hunger column. >>> >>> myframe <- data.frame (ID=c("Ernie", "Ernie", "Ernie", "Bert", >>> "Bert","Bert", "Duck"), Hunger=c(1,1,1,2,2,1,3) ) >>> >>> myframe$Hungertype <- c("none", "bighunger", >>> "verybighunger")[myframe$Hunger] >>> >>> ID Hunger Hungertype >>> 1 Ernie 1 none >>> 2 Ernie 1 none >>> 3 Ernie 1 none >>> 4 Bert 2 bighunger >>> 5 Bert 2 bighunger >>> 6 Bert 1 none >>> 7 Duck 3 verybighunger >>> >>> Then you can subset it to remove low values, sort it, etc. >>> >>> On Wed, Oct 28, 2015 at 8:20 AM, Dagmar Cimiotti >>> <dagmar.cimiotti at gmx.de <mailto:dagmar.cimiotti at gmx.de>> wrote: >>> >>>> Hello, >>>> It must be very easy. >>>> >>>> I have data like this: >>>> myframe <- data.frame (ID=c("Ernie", "Ernie", "Ernie", "Bert", >>>> "Bert","Bert", "Duck"), Hunger=c(1,1,1,2,2,1,3) ) >>>> myframe >>>> bighunger <- subset (myframe, myframe$Hunger>=2 &myframe$Hunger <3 ) >>>> bighunger >>>> verybighunger <- subset(myframe,myframe$Hunger>=3) >>>> verybighunger >>>> hungry <- rbind (bighunger=bighunger,very=verybighunger) >>>> hungry >>>> >>>> BUT I want a result like this: >>>> myframesresult <- data.frame(Hunger=c("bighunger","bighunger","very"), >>>> ID=c("Bert", "Bert", "duck"), Hunger=c(2,2,3)) >>>> myframesresult >>>> >>>> Where is my mistake? >>>> Very many thanks in advance!! >>>> Dagmar >>>> >> ______________________________________________ >> R-help at r-project.org <mailto: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.htmland provide commented, >> minimal, self-contained, reproducible code. > >[[alternative HTML version deleted]]