我有两个变量:X
和state
,如下所示
set.seed(3)
state <- rbinom(15,4,0.6)
X <- c(1:15)
X
state
,输出
> state
[1] 3 2 3 3 2 2 4 3 2 2 2 2 2 2 1
> X
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
我想选择与同一状态相对应的X
。知道如何在R中做到这一点吗?
答案 0 :(得分:4)
使用split
可获得4个州的列表
ll <- split(X,state)
$`1`
[1] 15
$`2`
[1] 2 5 6 9 10 11 12 13 14
$`3`
[1] 1 3 4 8
$`4`
[1] 7
ll[3]
$`3`
[1] 1 3 4 8
通常我们使用ave
在分组时执行某些操作。
例如,我在这里得到X的平均值:
ave(X,state,FUN = mean)
[1] 4.000000 9.111111 4.000000 4.000000 9.111111 9.111111 7.000000 4.000000 9.111111 9.111111 9.111111 9.111111 9.111111 9.111111 15.000000
答案 1 :(得分:0)
另一种方法是将变量放在数据框中,然后从那里选择它们:
> df <- data.frame(x = X, state = state)
> df
x state
1 1 3
2 2 2
3 3 3
4 4 3
5 5 2
6 6 2
7 7 4
8 8 3
9 9 2
10 10 2
11 11 2
12 12 2
13 13 2
14 14 2
15 15 1
> df[df$state == 3,]
x state
1 1 3
3 3 3
4 4 3
8 8 3