[R] changing one character in the name of dataframes repeatedly
David Winsemius
dwinsemius at comcast.net
Fri Mar 11 17:36:10 CET 2011
On Mar 11, 2011, at 10:49 AM, Bodnar Laszlo EB_HU wrote:
> Dear R-community,
>
> I'd like to ask you a question concerning R again. I try to keep
> this simple because I am not willing to confuse you at all.
>
> I have a little data frame which I have created the following way:
>
> a <-c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6)
> b <-
> c
> (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
> )
> df <-as.data.frame(cbind(a,b))
> df
>
> Now in the next step I would have liked to create smaller dataframes
> where the data have been extracted (basically splitted) from the
> main 'df' dataframe according to the numbers in df$a.
?split
> Something like this:
> a b
> 1 1
> 1 2
> 1 3
> 1 4
> 1 5
>
> a b
> 2 6
> 2 7
> 2 8
> 2 9
> 2 10
>
> a b
> 3 11
> 3 12
> 3 13
> 3 14
> 3 15
>
> a b
> 4 16
> 4 17
> 4 18
> 4 19
> 4 20
>
> etc.
>
> It is not quite difficult to do this part. But!! I also want that
> the name of each and every small dataframe should refer to the fact
> that according to which number in df$a have I selected the data in df
> $b.
split.name <- function(df) { z <- split(df, df[["a"]])
names(z) <- paste("df", unique(df[["a"]], sep="."); z}
> split.name(df)
$df.1
a b
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
$df.2
a b
6 2 6
7 2 7
<output snipped>
--
David.
>
> For example:
>
> df.1 meaning I have only chosen those numbers in df$b which have
> value "1" in df$a
>
> df.1
> a b
> 1 1
> 1 2
> 1 3
> 1 4
> 1 5
>
> df.2 meaning I have only chosen those numbers in df$b which have
> value "2" in df$a.
>
> df.2
> a b
> 2 6
> 2 7
> 2 8
> 2 9
> 2 10
>
> df.3 meaning I have only chosen those numbers in df$b which have
> value "3" in df$a.
> a b
> 3 11
> 3 12
> 3 13
> 3 14
> 3 15
> etc...
>
> I know it would not be difficult to do this in this way:
> df.1 <-split(df,df$a)[[1]]
> df.2 <-split(df,df$a)[[2]]
> df.3 <-split(df,df$a)[[3]]
> df.4 <-split(df,df$a)[[4]]
> etc...
>
> But as a matter of fact, my real df dataframe consists of more than
> 4400 records so it is impossible to do this "manually" for a
> numerous times with the previously mentioned split function.
>
> I wanted to use loops and managing the problem in the following
> (wrong) way:
> for (i in 1:6)
> {
> df.i <-split(df,df$a)[[i]]
> }
>
> After I wanted to enter df.1, df.2, etc... R sent me the message:
> Error: object 'df.1' not found.
>
> However, it recognized df.i and listed following:
> a b
> 6 26
> 6 27
> 6 28
> 6 29
> 6 30
>
> Can you help me with this matter? I wonder if there is a proper way
> to do this which I haven't figured out yet...
>
> Thank you very much and have a pleasant weekend,
> Laszlo Bodnar
>
> ____________________________________________________________________________________________________
> Ez az e-mail és az összes hozzá tartozó csatolt melléklet titkos
> és/vagy jogilag, szakmailag vagy más módon védett információt
> tartalmazhat. Amennyiben nem Ön a levél címzettje akkor a levél
> tartalmának közlése, reprodukálása, másolása, vagy egyéb más
> úton történő terjesztése, felhasználása szigorúan tilos.
> Amennyiben tévedésből kapta meg ezt az üzenetet kérjük azonnal
> értesítse az üzenet küldőjét. Az Erste Bank Hungary Zrt. (EBH)
> nem vállal felelősséget az információ teljes és pontos -
> címzett(ek)hez történő - eljuttatásáért, valamint semmilyen
> késésért, kapcsolat megszakadásból eredő hibáért, vagy az
> információ felhasználásából vagy annak
> megbízhatatlanságából eredő kárért.
>
> Az üzenetek EBH-n kívüli küldője vagy címzettje tudomásul
> veszi és hozzájárul, hogy az üzenetekhez más banki alkalmazott
> is hozzáférhet az EBH folytonos munkamenetének biztosítása
> érdekében.
>
>
> This e-mail and any attached files are confidential and/...{{dropped:
> 19}}
>
> ______________________________________________
> 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.
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list