我正在尝试找到一种通过列中的唯一值拆分表的一般方法,并将它们分配给不同的变量。我有一个这样的表
> 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中唯一值的值和数量,我怎么能在一个命令中执行此操作?
由于
答案 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
...