如何在R中多次将有序数据帧拆分为前半部分和后半部分
我想根据一列的顺序将我的数据框分成多个部分,这样我就可以有一个包含“前半部分”和“后半部分”的列。例如,我希望数据如下所示:如何在R中多次将有序数据帧拆分为前半部分和后半部分,r,R,我想根据一列的顺序将我的数据框分成多个部分,这样我就可以有一个包含“前半部分”和“后半部分”的列。例如,我希望数据如下所示: 1 - first half 2 - first half 3 - second half 4 - second half 2 - first half 3 - first half 4 - second half 5 - second half 下面是重现数据基本结构的代码 order <- data.frame(test = c(1:10, 4:13, 6:1
1 - first half
2 - first half
3 - second half
4 - second half
2 - first half
3 - first half
4 - second half
5 - second half
下面是重现数据基本结构的代码
order <- data.frame(test = c(1:10, 4:13, 6:15))
order这里有一种方法-
order$group <- rep(1:nrow(order), each = 5, length.out = nrow(order))
first_half <- order[order$group %% 2 == 1, ]
second_half <- order[order$group %% 2 == 0, ]
您也可以使用split(order,f=order$group%%2==1)
来生成每一半的数据帧列表。感谢您的回复!如果群体不均衡,有没有办法做到这一点?对不起,我在做我的简单示例时没有想到这一点。@Lisa模式/规则可以编码。如果没有模式/规则,那么就没有代码。不均匀性有规律吗?我知道每组有多少,但没有规律。也许将其拆分、使用此代码并将其重新组合起来会更容易。谢谢大家!@Lisa你只是想把数据集随机分成两半吗?不,这是有顺序的。有测量时间帧(每帧为10毫秒),这些帧被分为几个类别(之前、期间、之后)。我需要前半部分和后半部分。
order$group <- rep(1:nrow(order), each = 5, length.out = nrow(order))
first_half <- order[order$group %% 2 == 1, ]
second_half <- order[order$group %% 2 == 0, ]
first_half
test halves group
1 1 firstHalf 1
2 2 firstHalf 1
3 3 firstHalf 1
4 4 firstHalf 1
5 5 firstHalf 1
11 4 firstHalf 3
12 5 firstHalf 3
13 6 firstHalf 3
14 7 firstHalf 3
15 8 firstHalf 3
21 6 firstHalf 5
22 7 firstHalf 5
23 8 firstHalf 5
24 9 firstHalf 5
25 10 firstHalf 5
second_half
test halves group
6 6 secondHalf 2
7 7 secondHalf 2
8 8 secondHalf 2
9 9 secondHalf 2
10 10 secondHalf 2
16 9 secondHalf 4
17 10 secondHalf 4
18 11 secondHalf 4
19 12 secondHalf 4
20 13 secondHalf 4
26 11 secondHalf 6
27 12 secondHalf 6
28 13 secondHalf 6
29 14 secondHalf 6
30 15 secondHalf 6