Hi Don, Hi to all readers, many thanks for all your answers and all your help.
I adapted Don's code to my data and Don's code does the trick: str(Kunden01) for (year in 2011:2015) { Reeller_Kunde <- paste0("Reeller_Kunde_", year) Umsatz <- paste0("Umsatz_", year) cat('Creating', Reeller_Kunde,'from', Umsatz,'\n') Kunden01[[ Reeller_Kunde ]] <- ifelse( Kunden01[[ Umsatz ]] >= 0, 1, 2) Kunden01[[ Reeller_Kunde ]] <- factor( Kunden01[[ Reeller_Kunde ]], levels=c(1,2), labels= c("NICHT kaufend", "kaufend") ) } str(Kunden01) This way a new variable is created by building it from a string concatenation. I also like the cat() function to document the process within the loop while running the program. Many thanks for your help. Kind regards Georg Von: g.maub...@gmx.de An: g.maub...@weinwolf.de, Datum: 25.04.2016 21:37 Betreff: Fw: Re: [R] Creating variables on the fly > Gesendet: Montag, 25. April 2016 um 19:35 Uhr > Von: "MacQueen, Don" <macque...@llnl.gov> > An: "g.maub...@gmx.de" <g.maub...@gmx.de>, "r-help@r-project.org" <r-help@r-project.org> > Betreff: Re: [R] Creating variables on the fly > > 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.maub...@gmx.de" > <r-help-boun...@r-project.org on behalf of g.maub...@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@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. > > ______________________________________________ R-help@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.