Hi All,I have a dataframe called 'means' as shown below:iris1.csv <- iris iris2.csv <- iris names <- c("iris1.csv", "iris2.csv") dat <- mget(names) lst4 <- lapply(dat, function(x) apply(x[,-5], 2, mean)) # Build the new data frame means <- as.data.frame(do.call(rbind, lst4)) means$source <- names(lst4) means # Sepal.Length Sepal.Width Petal.Length Petal.Width isv source # iris1.csv 5.843333 3.057333 3.758 1.199333 0.3333333 iris1.csv # iris2.csv 5.843333 3.057333 3.758 1.199333 0.3333333 iris2.csvQUESTION: How can I split 'means' such that there are two files (dataframes) on my workspace:datframe 1# Sepal.Length Sepal.Width Petal.Length Petal.Width isv # iris1.csv 5.843333 3.057333 3.758 1.199333 0.3333333dataframe 2:# Sepal.Length Sepal.Width Petal.Length Petal.Width isv# iris2.csv 5.843333 3.057333 3.758 1.199333 0.3333333 Many thanks,Asong. [[alternative HTML version deleted]]
Hi, I think you need not split the data.frame to get the desired result. You can work with your list lst4 itself. #Convert the vectors in the list to data.frames. lst4 <- lapply(lst4, function(x) {as.data.frame(t(iris1.csv))}) #Get the data.frames in the list to the global environment list2env(lst4 ,.GlobalEnv) Regards On 17 February 2015 at 09:23, Zilefac Elvis via R-help <r-help at r-project.org> wrote:> Hi All,I have a dataframe called 'means' as shown below:iris1.csv <- iris > iris2.csv <- iris > names <- c("iris1.csv", "iris2.csv") > dat <- mget(names) > lst4 <- lapply(dat, function(x) apply(x[,-5], 2, mean)) > > # Build the new data frame > means <- as.data.frame(do.call(rbind, lst4)) > means$source <- names(lst4) > means > # Sepal.Length Sepal.Width Petal.Length Petal.Width isv source > # iris1.csv 5.843333 3.057333 3.758 1.199333 0.3333333 iris1.csv > # iris2.csv 5.843333 3.057333 3.758 1.199333 0.3333333 iris2.csvQUESTION: How can I split 'means' such that there are two files (dataframes) on my workspace:datframe 1# Sepal.Length Sepal.Width Petal.Length Petal.Width isv > # iris1.csv 5.843333 3.057333 3.758 1.199333 0.3333333dataframe 2:# Sepal.Length Sepal.Width Petal.Length Petal.Width isv# iris2.csv 5.843333 3.057333 3.758 1.199333 0.3333333 > Many thanks,Asong. > [[alternative HTML version deleted]] > > ______________________________________________ > 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.-- J.Aravind Scientist Germplasm Conservation Division ICAR-National Bureau of Plant Genetic Resources New Delhi - 110 012
# Assuming you want to create many data frames, you can use # assign to create new objects. newDFNames <- unique(means$source) newDFNames # [1] "iris1.csv" "iris2.csv" for (nm in newDFNames) { assign(x = nm, value = means[means$source == nm, , drop = FALSE], envir = .GlobalEnv) } iris1.csv # Sepal.Length Sepal.Width Petal.Length Petal.Width source # iris1.csv 5.843333 3.057333 3.758 1.199333 iris1.csv iris2.csv # Sepal.Length Sepal.Width Petal.Length Petal.Width source # iris2.csv 5.843333 3.057333 3.758 1.199333 iris2.csv # However, it may be that storing your # data objects as a single object, such as a list, is more useful. Chris Campbell, PhD Tel. +44 (0)1249 705 450?| Mobile. +44 (0) 7929 628 349 www.mango-solutions.com Mango Solutions 2 Methuen Park, Chippenham, Wiltshire. SN14 OGB UK -----Original Message----- From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Zilefac Elvis via R-help Sent: 17 February 2015 03:54 To: R. Help Subject: [R] split dataframe to several dataframes in R Hi All,I have a dataframe called 'means' as shown below:iris1.csv <- iris iris2.csv <- iris names <- c("iris1.csv", "iris2.csv") dat <- mget(names) lst4 <- lapply(dat, function(x) apply(x[,-5], 2, mean)) # Build the new data frame means <- as.data.frame(do.call(rbind, lst4)) means$source <- names(lst4) means # Sepal.Length Sepal.Width Petal.Length Petal.Width isv source # iris1.csv 5.843333 3.057333 3.758 1.199333 0.3333333 iris1.csv # iris2.csv 5.843333 3.057333 3.758 1.199333 0.3333333 iris2.csvQUESTION: How can I split 'means' such that there are two files (dataframes) on my workspace:datframe 1# Sepal.Length Sepal.Width Petal.Length Petal.Width isv # iris1.csv 5.843333 3.057333 3.758 1.199333 0.3333333dataframe 2:# Sepal.Length Sepal.Width Petal.Length Petal.Width isv# iris2.csv 5.843333 3.057333 3.758 1.199333 0.3333333 Many thanks,Asong. [[alternative HTML version deleted]] ______________________________________________ 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. -- LEGAL NOTICE\ \ This message is intended for the use of ...{{dropped:18}}
Inline. -- Bert Bert Gunter Genentech Nonclinical Biostatistics (650) 467-7374 "Data is not information. Information is not knowledge. And knowledge is certainly not wisdom." Clifford Stoll On Tue, Feb 17, 2015 at 1:33 AM, Chris Campbell <ccampbell at mango-solutions.com> wrote:> # Assuming you want to create many data frames, you can use > # assign to create new objects.But almost never should.. See ?list and read some tutorials -- Please!> newDFNames <- unique(means$source) > newDFNames > # [1] "iris1.csv" "iris2.csv" > for (nm in newDFNames) { > assign(x = nm, > value = means[means$source == nm, , drop = FALSE], > envir = .GlobalEnv) > } > > iris1.csv > # Sepal.Length Sepal.Width Petal.Length Petal.Width source > # iris1.csv 5.843333 3.057333 3.758 1.199333 iris1.csv > > iris2.csv > # Sepal.Length Sepal.Width Petal.Length Petal.Width source > # iris2.csv 5.843333 3.057333 3.758 1.199333 iris2.csv > > # However, it may be that storing your > # data objects as a single object, such as a list, is more useful. > > Chris Campbell, PhD > > Tel. +44 (0)1249 705 450 | Mobile. +44 (0) 7929 628 349 > www.mango-solutions.com > Mango Solutions > 2 Methuen Park, Chippenham, Wiltshire. SN14 OGB UK > > -----Original Message----- > From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Zilefac Elvis via R-help > Sent: 17 February 2015 03:54 > To: R. Help > Subject: [R] split dataframe to several dataframes in R > > Hi All,I have a dataframe called 'means' as shown below:iris1.csv <- iris iris2.csv <- iris names <- c("iris1.csv", "iris2.csv") dat <- mget(names) > lst4 <- lapply(dat, function(x) apply(x[,-5], 2, mean)) > > # Build the new data frame > means <- as.data.frame(do.call(rbind, lst4)) means$source <- names(lst4) means > # Sepal.Length Sepal.Width Petal.Length Petal.Width isv source > # iris1.csv 5.843333 3.057333 3.758 1.199333 0.3333333 iris1.csv > # iris2.csv 5.843333 3.057333 3.758 1.199333 0.3333333 iris2.csvQUESTION: How can I split 'means' such that there are two files (dataframes) on my workspace:datframe 1# Sepal.Length Sepal.Width Petal.Length Petal.Width isv > # iris1.csv 5.843333 3.057333 3.758 1.199333 0.3333333dataframe 2:# Sepal.Length Sepal.Width Petal.Length Petal.Width isv# iris2.csv 5.843333 3.057333 3.758 1.199333 0.3333333 > Many thanks,Asong. > [[alternative HTML version deleted]] > > ______________________________________________ > 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. > > -- > > LEGAL NOTICE\ \ This message is intended for the use of ...{{dropped:18}} > > ______________________________________________ > 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.
Great! Thanks, Aravind. On Monday, February 16, 2015 10:50 PM, Aravind Jayaraman <aravindjayaramanagri at gmail.com> wrote: Hi, I think you need not split the data.frame to get the desired result. You can work with your list lst4 itself. #Convert the vectors in the list to data.frames. lst4 <- lapply(lst4, function(x) {as.data.frame(t(iris1.csv))}) #Get the data.frames in the list to the global environment list2env(lst4 ,.GlobalEnv) Regards On 17 February 2015 at 09:23, Zilefac Elvis via R-help <r-help at r-project.org> wrote:> Hi All,I have a dataframe called 'means' as shown below:iris1.csv <- iris > iris2.csv <- iris > names <- c("iris1.csv", "iris2.csv") > dat <- mget(names) > lst4 <- lapply(dat, function(x) apply(x[,-5], 2, mean)) > > # Build the new data frame > means <- as.data.frame(do.call(rbind, lst4)) > means$source <- names(lst4) > means > #? ? ? ? ? Sepal.Length Sepal.Width Petal.Length Petal.Width? ? ? isv? ? source > # iris1.csv? ? 5.843333? ? 3.057333? ? ? ? 3.758? ? 1.199333 0.3333333 iris1.csv > # iris2.csv? ? 5.843333? ? 3.057333? ? ? ? 3.758? ? 1.199333 0.3333333 iris2.csvQUESTION: How can I split 'means' such that there are two files (dataframes) on my workspace:datframe 1#? ? ? ? ? Sepal.Length Sepal.Width Petal.Length Petal.Width? ? ? isv > # iris1.csv? ? 5.843333? ? 3.057333? ? ? ? 3.758? ? 1.199333 0.3333333dataframe 2:#? ? ? ? ? Sepal.Length Sepal.Width Petal.Length Petal.Width? ? ? isv# iris2.csv? ? 5.843333? ? 3.057333? ? ? ? 3.758? ? 1.199333 0.3333333 > Many thanks,Asong. >? ? ? ? [[alternative HTML version deleted]] > > ______________________________________________ > 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.-- J.Aravind Scientist Germplasm Conservation Division ICAR-National Bureau of Plant Genetic Resources New Delhi - 110 012 [[alternative HTML version deleted]]