R Experts, I would like to create a series of variables without having to assign a separate line of code for each new variable. My dataframe (DF) contains two groups of linked variables (ESP1:ESP9) and (ECRL1:ECRL9). Within ESP1:ESP9 are abbreviated species codes (full dataframe contains 26 codes). ECRL1 represents the number of species x in variable ESP1 harvested, and so on through ESP9 and ECRL9. What I want to do is create 26 new variables (one for each unique species code) that contains the number harvested (ECRL) for each corresponding species code listed for each row of the data set. Example (row 14), the new variable YP Harvest would equal 90 (ECRL2) and WP Harvest would equal 0 (ECRL1), all other species code var's would contain NA.
I hope I made this clear enough. Thank you, Mike Current method: one line per species EBTCH1.h$YP.H <- with(EBTCH1.h,ifelse(ESP1 %in% 'YP',ECRL1,ifelse(ESP2 %in% 'YP',ECRL2, ifelse(ESP3 %in% 'YP',ECRL3,ifelse(ESP4 %in% 'YP',ECRL4,ifelse(ESP5 %in% 'YP',ECRL5, ifelse(ESP6 %in% 'YP',ECRL6,ifelse(ESP7 %in% 'YP',ECRL7,ifelse(ESP8 %in% 'YP',ECRL8, ifelse(ESP9 %in% 'YP',ECRL9,0)))))))))) DF <- structure(list(MM = c(5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L), DD = c(3L, 3L, 3L, 3L, 3L, 3L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L), DTYPE = c(2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1), TOD = c(2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1), SITENUM = c("102", "104", "104", "104", "101", "101", "102", "103", "101", "101", "101", "101", "103", "103", "103" ), CURTIM = c(1450L, 1736L, 1755L, 1804L, 1950L, 2007L, 1150L, 1450L, 2000L, 1003L, 1030L, 1036L, 1300L, 1310L, 1320L), GRPFSH = c(2L, 2L, 2L, 2L, 2L, 3L, 1L, 2L, 3L, 2L, 4L, 1L, 1L, 3L, 1L), EEFF = c(11.5, 19, 5, 20, 0, 0, 5, 8, 0, 0, 0, 0, 3, 12, 6), ESP1 = c("SMB", "SMB", "SMB", "SMB", NA, NA, "YP", "YP", NA, NA, NA, NA, "RG", "WP", "WP"), ESP2 = c(NA, "RB", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "SMB", "YP", "YP"), ESP3 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "RB", "RBS", NA), ESP4 = c(NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_), ESP5 = c(NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_), ESP6 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), ESP7 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), ESP8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), ESP9 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), ECRL1 = c(0L, 0L, 0L, 0L, 0L, 0L, 4L, 5L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), ECRL2 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 90L, 30L), ECRL3 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), ECRL4 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), ECRL5 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), ECRL6 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), ECRL7 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), ECRL8 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), ECRL9 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("MM", "DD", "DTYPE", "TOD", "SITENUM", "CURTIM", "GRPFSH", "EEFF", "ESP1", "ESP2", "ESP3", "ESP4", "ESP5", "ESP6", "ESP7", "ESP8", "ESP9", "ECRL1", "ECRL2", "ECRL3", "ECRL4", "ECRL5", "ECRL6", "ECRL7", "ECRL8", "ECRL9"), row.names = c(NA, 15L), class = "data.frame") ______________________________________________ R-help@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.