[R] create new column in a DF according to values from another column

jim holtman jholtman at gmail.com
Wed Sep 26 14:09:35 CEST 2012


Here is another technique to use, especially if you have a long list
of replacement values:


> DF <- data.frame(number=c(1,4,7,3,11,16,14,17,20,19),data=c(1:10))
>
> # create a list of replacement values; if you have a lot and
> # you can create them automagically, then it is easier
> replace <- list(list(c(1, 7, 11, 16), "V1")
+               , list(c(4, 14, 20), "V2")
+               , list(c(3, 17, 19), "V3")
+               )
> for (i in replace){
+     DF$Station[DF$number %in% i[[1L]]] <- i[[2L]]
+ }
> DF
   number data Station
1       1    1      V1
2       4    2      V2
3       7    3      V1
4       3    4      V3
5      11    5      V1
6      16    6      V1
7      14    7      V2
8      17    8      V3
9      20    9      V2
10     19   10      V3


On Wed, Sep 26, 2012 at 6:49 AM, jeff6868
<geoffrey_klein at etu.u-bourgogne.fr> wrote:
> Hi everyone,
>
> I have a small problem in my R-code.
>
> Imagine this DF for example:
>
> DF <- data.frame(number=c(1,4,7,3,11,16,14,17,20,19),data=c(1:10))
>
> I would like to add a new column "Station" in this DF. This new column must
> be automatically filled with: "V1" or "V2" or "V3".
> The choice must be done on the numbers (1st column).
>
> For example, I would like to have "V1" in the column "Station" in the rows
> where the numbers of the 1st column are: 1,7,11,16 ; then I would like to
> have "V2" in the rows where the numbers are: 4,14,20 and finally "V3" in the
> rows where the numbers are: 3,17,19.
>
> I'm trying with "if" and something like this, but it's not working yet:
> # For "V1":
> if(DF$number %in% c(1,7,11,16)) {test$Station=="V1"}
> # For "V2":
> ...
>
> So my final DF should look like this:
>
> FINALDF <- data.frame(number=c(1,4,7,3,11,16,14,17,20,19),data=c(1:10),
> Station=c("V1","V2","V1","V3","V1","V1","V2","V3","V2","V3"))
>
> Could someone help me to finish this?
>
> Thank you very much!!!
>
>
>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/create-new-column-in-a-DF-according-to-values-from-another-column-tp4644217.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.



-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.




More information about the R-help mailing list