簡體   English   中英

將數據幀分為相同數量的組,不同的行大小

[英]Splitting dataframe into equal number of groups, differing row sizes

我想拆分一個包含許多變量的數據框,並且我想對某個變量進行分組,其中該變量具有不同的行數。 這是可重現的示例:

y = data.frame(num = 1:4, sort_var = rep(c('hhh', 'jjj','iii','aaa'),4))
x = data.frame(num = 5:7, sort_var = rep(c('ddd', 'ccc','bbb'),2))

xy = rbind(x,y)
xy = xy[order(xy$num),]

我想從num列中組成組,其中每個組都是通過將num 1:2、3:4、5:6和7分組來組成的。

謝謝。

> split(xy,(xy$num-1)%/%2)
$`0`
   num sort_var
7    1      hhh
11   1      hhh
15   1      hhh
19   1      hhh
8    2      jjj
12   2      jjj
16   2      jjj
20   2      jjj

$`1`
   num sort_var
9    3      iii
13   3      iii
17   3      iii
21   3      iii
10   4      aaa
14   4      aaa
18   4      aaa
22   4      aaa

$`2`
  num sort_var
1   5      ddd
4   5      ddd
2   6      ccc
5   6      ccc

$`3`
  num sort_var
3   7      bbb
6   7      bbb

用這個:

by(xy, as.integer((xy$num+1)/2), I)

請注意,我已經使用函數I來處理每個組,這只是復制結果。 但是您可以(應該)更改它。

library(car)

sp <- recode(xy$num, "1:2=1; 3:4=2; 5:6=3; 7=4")
split(xy, sp)

$`1`
   num sort_var
7    1      hhh
11   1      hhh
15   1      hhh
19   1      hhh
8    2      jjj
12   2      jjj
16   2      jjj
20   2      jjj

$`2`
   num sort_var
9    3      iii
13   3      iii
17   3      iii
21   3      iii
10   4      aaa
14   4      aaa
18   4      aaa
22   4      aaa

$`3`
  num sort_var
1   5      ddd
4   5      ddd
2   6      ccc
5   6      ccc

$`4`
  num sort_var
3   7      bbb
6   7      bbb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM