rの列の累積値に基づいてデータを分割する

ジョン

私は次のタイプのデータを持っています:

    myd <- data.frame (group  = c(rep(1, 15), rep(2, 15)),
                       distance = c(0, 4, 8,9,11,  14,18,19,23, 24,  29,30,35,40, 43,
                                    0, 8,9,9,12,   13,14,15,16, 18,  23,24,28, 29, 30),
                      var1 = c(1:15, 11:25), var2 = 1:30, var3 = 1:30)
    myd 

   group distance var1 var2 var3
1      1        0    1    1    1
2      1        4    2    2    2
3      1        8    3    3    3
4      1        9    4    4    4
5      1       11    5    5    5
6      1       14    6    6    6
7      1       18    7    7    7
8      1       19    8    8    8
9      1       23    9    9    9
10     1       24   10   10   10
11     1       29   11   11   11
12     1       30   12   12   12
13     1       35   13   13   13
14     1       40   14   14   14
15     1       43   15   15   15
16     2        0   11   16   16
17     2        8   12   17   17
18     2        9   13   18   18
19     2        9   14   19   19
20     2       12   15   20   20
21     2       13   16   21   21
22     2       14   17   22   22
23     2       15   18   23   23
24     2       16   19   24   24
25     2       18   20   25   25
26     2       23   21   26   26
27     2       24   22   27   27
28     2       28   23   28   28
29     2       29   24   29   29
30     2       30   25   30   30

複数のグループレベルがあります(上記の2つより)。各距離(高速道路のマイルポストなど)は0から始まり、累積してグループに終わります。各グループがおよそ距離10になるようにデータを分割(ビンを作成)したいと思います。結果の分割データは次のようになります。

data group1subset1

          group distance var1 var2 var3
    1      1        0    1    1    1
    2      1        4    2    2    2
    3      1        8    3    3    3
    4      1        9    4    4    4
data group1subset2
    5      1       11    5    5    5
    6      1       14    6    6    6
    7      1       18    7    7    7
    8      1       19    8    8    8
data group1subset3
    9      1       23    9    9    9
    10     1       24   10   10   10
    11     1       29   11   11   11
    12     1       30   12   12   12
data group1subset4
    13     1       35   13   13   13
    14     1       40   14   14   14
data group1subset5
    15     1       43   15   15   15
=====
data group2subset1
    16     2        0   11   16   16
    17     2        8   12   17   17
    18     2        9   13   18   18
    19     2        9   14   19   19
data group2subset2
    20     2       12   15   20   20
    21     2       13   16   21   21
    22     2       14   17   22   22
    23     2       15   18   23   23
    24     2       16   19   24   24
    25     2       18   20   25   25
data group2subset3
    26     2       23   21   26   26
    27     2       24   22   27   27
    28     2       28   23   28   28
    29     2       29   24   29   29
    30     2       30   25   30   30

実際のデータは非常に大きいため、プロセスを自動化する必要があります。どうすればそれができるか提案してください。

AndrewMacDonald

私は実際にcutこれを達成するために使用します:

maxd <- (max(myd$distance) %/% 10 * 10) + 10


transform(myd,cutdist = cut(distance, breaks = seq(0,maxd, by = 10),
                            include.lowest = TRUE))

   group distance var1 var2 var3 cumdist cutdist
1      1        0    1    1    1       0  [0,10]
2      1        4    2    2    2       4  [0,10]
3      1        8    3    3    3      12  [0,10]
4      1        9    4    4    4      21  [0,10]
5      1       11    5    5    5      32 (10,20]
6      1       14    6    6    6      46 (10,20]
7      1       18    7    7    7      64 (10,20]
8      1       19    8    8    8      83 (10,20]
9      1       23    9    9    9     106 (20,30]
10     1       24   10   10   10     130 (20,30]
11     1       29   11   11   11     159 (20,30]
12     1       30   12   12   12     189 (20,30]
13     1       35   13   13   13     224 (30,40]
14     1       40   14   14   14     264 (30,40]
15     1       43   15   15   15     307 (40,50]
16     2        0   11   16   16     307  [0,10]
17     2        8   12   17   17     315  [0,10]
18     2        9   13   18   18     324  [0,10]
19     2        9   14   19   19     333  [0,10]
20     2       12   15   20   20     345 (10,20]
21     2       13   16   21   21     358 (10,20]
22     2       14   17   22   22     372 (10,20]
23     2       15   18   23   23     387 (10,20]
24     2       16   19   24   24     403 (10,20]
25     2       18   20   25   25     421 (10,20]
26     2       23   21   26   26     444 (20,30]
27     2       24   22   27   27     468 (20,30]
28     2       28   23   28   28     496 (20,30]
29     2       29   24   29   29     525 (20,30]
30     2       30   25   30   30     555 (20,30]

10の倍数のグループに保持したいので、実際には累積距離を計算する必要はありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

特定の累積値に基づいてデータフレームを分割します

分類Dev

既存の列に基づいてデータフレーム内の新しい累積列を計算する

分類Dev

既存の列に基づいてデータフレームに新しい累積列を作成する

分類Dev

他の列の値に基づいて累積カウントを作成する

分類Dev

別の列に基づいて1つの列にSQLの値を累積する方法は?

分類Dev

R:別の列の値に基づいて、列の分割文字列からデータを取得します

分類Dev

列の値に基づいて累積合計を持ち、groupbyを持つ2つの列を作成する方法

分類Dev

データフレームPythonの列基準に基づいて行の値を分割する

分類Dev

Excelの非累積カテゴリ列に基づいて累積全体合計を動的に作成する方法

分類Dev

列の値の違いに基づいてパンダのデータフレームを分割する方法

分類Dev

データフレーム列の内容を値に基づいて異なる列に分割する

分類Dev

別の列に基づいて累積合計をリセットする

分類Dev

等しい長さに基づいてデータフレーム列をRの別々の行に分割する方法

分類Dev

列のセルの分割に基づいてRデータフレームの行を複製する

分類Dev

グループ内の別の列に基づいて選択的な累積合計を高速化する

分類Dev

列の行に基づいてデータフレームを分割する方法

分類Dev

パンダ:列のnull値に基づいてデータフレームを分割する

分類Dev

Rでのデータの再形成-既存の列の値に基づいて新しい列を作成する

分類Dev

他の列の値に基づいて列にデータを追加する

分類Dev

Rの列値の文字列に基づいて、データフレームを2つのサブデータフレームに分割します

分類Dev

複数の基準に基づいて(平均)データを蓄積する方法

分類Dev

2つの基準に基づいてデータを蓄積する

分類Dev

最後の列に基づいてNumPy配列の行を累積します

分類Dev

新しいIDに対してのみ累積する別の列に基づいて累積列を作成する

分類Dev

累積値に基づいて行を合計する

分類Dev

列の値に基づいてデータフレームを分割/拡張

分類Dev

条件に基づいて、Rの2つのデータフレーム間の列の値を検証する

分類Dev

文字列列の値に基づいてパンダのデータフレームを分割します

分類Dev

データに存在する同様のペアに基づいてRの列値を配置する

Related 関連記事

  1. 1

    特定の累積値に基づいてデータフレームを分割します

  2. 2

    既存の列に基づいてデータフレーム内の新しい累積列を計算する

  3. 3

    既存の列に基づいてデータフレームに新しい累積列を作成する

  4. 4

    他の列の値に基づいて累積カウントを作成する

  5. 5

    別の列に基づいて1つの列にSQLの値を累積する方法は?

  6. 6

    R:別の列の値に基づいて、列の分割文字列からデータを取得します

  7. 7

    列の値に基づいて累積合計を持ち、groupbyを持つ2つの列を作成する方法

  8. 8

    データフレームPythonの列基準に基づいて行の値を分割する

  9. 9

    Excelの非累積カテゴリ列に基づいて累積全体合計を動的に作成する方法

  10. 10

    列の値の違いに基づいてパンダのデータフレームを分割する方法

  11. 11

    データフレーム列の内容を値に基づいて異なる列に分割する

  12. 12

    別の列に基づいて累積合計をリセットする

  13. 13

    等しい長さに基づいてデータフレーム列をRの別々の行に分割する方法

  14. 14

    列のセルの分割に基づいてRデータフレームの行を複製する

  15. 15

    グループ内の別の列に基づいて選択的な累積合計を高速化する

  16. 16

    列の行に基づいてデータフレームを分割する方法

  17. 17

    パンダ:列のnull値に基づいてデータフレームを分割する

  18. 18

    Rでのデータの再形成-既存の列の値に基づいて新しい列を作成する

  19. 19

    他の列の値に基づいて列にデータを追加する

  20. 20

    Rの列値の文字列に基づいて、データフレームを2つのサブデータフレームに分割します

  21. 21

    複数の基準に基づいて(平均)データを蓄積する方法

  22. 22

    2つの基準に基づいてデータを蓄積する

  23. 23

    最後の列に基づいてNumPy配列の行を累積します

  24. 24

    新しいIDに対してのみ累積する別の列に基づいて累積列を作成する

  25. 25

    累積値に基づいて行を合計する

  26. 26

    列の値に基づいてデータフレームを分割/拡張

  27. 27

    条件に基づいて、Rの2つのデータフレーム間の列の値を検証する

  28. 28

    文字列列の値に基づいてパンダのデータフレームを分割します

  29. 29

    データに存在する同様のペアに基づいてRの列値を配置する

ホットタグ

アーカイブ