0

I'm trying to find a general way to split a table by unique value in a column and assign them to different varibles .I have a table like this

> x <-expand.grid(c("a","b","c"), c(1:2),c(1:2))
> x
Var1 Var2 Var3
1     a    1    1
2     b    1    1
3     c    1    1
4     a    2    1
5     b    2    1
6     c    2    1
7     a    1    2
8     b    1    2
9     c    1    2
10    a    2    2
11    b    2    2
12    c    2    2    

What i need is something like

> xa <- x[x$Var1 == "a",]
> xb <- x[x$Var1 == "b",]
> xc <- x[x$Var1 == "c",]
> xa
Var1 Var2 Var3
1     a    1    1
4     a    2    1
7     a    1    2
10    a    2    2
> xb
Var1 Var2 Var3
2     b    1    1
5     b    2    1
8     b    1    2
11    b    2    2
> xc
Var1 Var2 Var3
3     c    1    1
6     c    2    1
9     c    1    2
12    c    2    2

But how can I do this in one command assuming I don't know the values and number of unique values in Var1?

Thanks

Sotos
  • 51,121
  • 6
  • 32
  • 66
cetlili
  • 13
  • 1
  • 2

1 Answers1

3

If you can accept having a list as a result each of whose elements corresponds to one value from Var1, then you can try using a base R option split:

split(x, x$Var1)
$a
   Var1 Var2 Var3
1     a    1    1
4     a    2    1
7     a    1    2
10    a    2    2

$b
...

Demo

Tim Biegeleisen
  • 502,043
  • 27
  • 286
  • 360