按列中的值拆分数据框

时间:2017-11-19 08:10:43

标签: r

我正在尝试找到一种通过列中的唯一值拆分表的一般方法,并将它们分配给不同的变量。我有一个这样的表

> 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    

我需要的是像

> 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

但是假设我不知道Var1中唯一值的值和数量,我怎么能在一个命令中执行此操作?

由于

1 个答案:

答案 0 :(得分:2)

如果您可以接受列表作为结果,其中每个元素对应于Var1中的一个值,那么您可以尝试使用基本R选项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