[R] rbind - names in dataframe. Beginner Question

ruipbarradas at sapo.pt ruipbarradas at sapo.pt
Thu Oct 29 08:38:31 CET 2015


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]]



More information about the R-help mailing list