[R] Creating variables on the fly

MacQueen, Don macqueen1 at llnl.gov
Mon Apr 25 19:35:14 CEST 2016


I'm going to assume that Kunden is a data frame, and it has columns
(variables) with names like
  Umstatz_2011
and that you want to create new columns with names like
  Kunde_real_2011

If that is so, then try this (not tested):

for (year in 2011:2015) {
  nmK <- paste0("Kunde_real_", year)
  nmU <- paste0("Umsatz_", year)
  cat('Creating',nmK,'from',nmU,'\n')
  Kunden[[ nmK ]] <- ifelse( Kunden[[ nmU ]] <= 0, 1, 2)
  Kunden[[ nmK ]] <- factor( Kunden[[ nmK ]],
       levels=c(1,2),
       labels= c("NICHT kaufend", "kaufend")
       )

}

This little example should illustrate the method:


> foo <- data.frame(a=1:4)
> foo
  a
1 1
2 2
3 3
4 4
> foo[['b']] <- foo[['a']]*3
> foo
  a  b
1 1  3
2 2  6
3 3  9
4 4 12



-- 
Don MacQueen

Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062





On 4/22/16, 8:52 AM, "R-help on behalf of G.Maubach at gmx.de"
<r-help-bounces at r-project.org on behalf of G.Maubach at gmx.de> wrote:

>Hi all,
>
>I would like to use a loop for tasks that occurs repeatedly:
>
># Groups 
># Umsatz <= 0: 1 (NICHT kaufend)
># Umsatz > 0: 2  (kaufend)
>for (year in c("2011", "2012", "2013", "2014", "2015")) {
>  paste0("Kunden$Kunde_real_", year) <- (paste0("Kunden$Umsatz_", year)
><= 0) * 1 + 
>                                        (paste0("Kunden$Umsatz_", year) >
> 0) * 2 
>  paste0("Kunden$Kunde_real_", year) <- factor(paste0("Kunden$Umsatz_",
>year), 
>                                               levels = c(1, 2),
>                                               labels = c("NICHT
>kaufend", "kaufend"))
>  } 
>
>This actually does not work due to the fact that the expression
>"paste0("Kunden$Kunde_real_", year)" ist not interpreted as a variable
>name by the R script language interpreter.
>
>Is there a way to assembly variable names on the fly in R?
>
>Regards
>
>Georg
>
>______________________________________________
>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.



More information about the R-help mailing list