【发布时间】:2020-04-27 14:17:50
【问题描述】:
我正在尝试根据两个标准对数据集进行子集化。这是我的数据快照:
ids <- c(1,1,1,1,1,1, 2,2,2,2,2,2, 3,3,3,3,3,3)
seq <- c(1,2,3,4,5,6, 1,2,3,4,5,6, 1,2,3,4,5,6)
type <- c(1,1,5,1,1,1, 1,1,1,8,1,1, 1,1,1,1,1,1)
data <- data.frame(ids, seq, type)
ids seq type
1 1 1 1
2 1 2 1
3 1 3 5
4 1 4 1
5 1 5 1
6 1 6 1
7 2 1 1
8 2 2 1
9 2 3 1
10 2 4 8
11 2 5 1
12 2 6 1
13 3 1 1
14 3 2 1
15 3 3 1
16 3 4 1
17 3 5 1
18 3 6 1
ids 是学生 ID,seq 是学生回答的问题(项目)的顺序。 type 指问题的类型。 1 是简单的,5 或 8 是复杂的项目。我想做的是生成第一个变量(complex)来判断学生是否有复杂的项目(type=5|8)。然后我想得到:
> data
ids seq type complex
1 1 1 1 1
2 1 2 1 1
3 1 3 5 1
4 1 4 1 1
5 1 5 1 1
6 1 6 1 1
7 2 1 1 1
8 2 2 1 1
9 2 3 1 1
10 2 4 8 1
11 2 5 1 1
12 2 6 1 1
13 3 1 1 0
14 3 2 1 0
15 3 3 1 0
16 3 4 1 0
17 3 5 1 0
18 3 6 1 0
第二步是在学生内部拆分数据。
(a) 对于有非复杂项目的学生(complex=0),我想将数据集从半点拆分并得到以下结果:
>simple.split.1
ids seq type complex
13 3 1 1 0
14 3 2 1 0
15 3 3 1 0
>simple.split.2
ids seq type complex
16 3 4 1 0
17 3 5 1 0
18 3 6 1 0
(b)对于有复杂项目的学生(complex=1),我想将复杂项目设置为切割点并从那里分割数据。所以数据应该是这样的(不包括复杂项):
>complex.split.1
ids seq type complex
1 1 1 1 1
2 1 2 1 1
7 2 1 1 1
8 2 2 1 1
9 2 3 1 1
>complex.split.2
ids seq type complex
4 1 4 1 1
5 1 5 1 1
6 1 6 1 1
11 2 5 1 1
12 2 6 1 1
有什么想法吗? 谢谢
【问题讨论】:
标签: r split conditional-statements subset