R、別の列の値に基づいて前の行を削除します

フェフトン

Rは初めてです。別の列で設定された条件に基づいて、前の行を削除しようとしています。

dplyrとdata.tableを使用したソリューションを見つけました。これらは逆であるため、探しているものに近いと思います。

サンプルデータ:

Cust_ID | Date                 | Value
500219  | 2016-04-11 12:00:00  | 0
500219  | 2016-04-12 16:00:00  | A
500219  | 2016-04-14 11:00:00  | A
500219  | 2016-04-15 12:00:00  | B
500219  | 2016-05-23 09:00:00  | B
500219  | 2016-05-02 19:00:00  | C
500220  | 2016-04-11 12:00:00  | C
500220  | 2016-04-14 11:00:00  | C
500220  | 2016-04-15 12:00:00  | A
500220  | 2016-05-23 09:00:00  | A
500220  | 2016-05-02 19:00:00  | A

Cust_IDごとに、その行を含むValue == "A"の後の行のみを保持したいと思います。これにより、次のデータフレームが作成されます。

Cust_ID | Date                 | Value
500219  | 2016-04-12 16:00:00  | A
500219  | 2016-04-14 11:00:00  | A
500219  | 2016-04-15 12:00:00  | B
500219  | 2016-05-23 09:00:00  | B
500219  | 2016-05-02 19:00:00  | C
500220  | 2016-04-15 12:00:00  | A
500220  | 2016-05-23 09:00:00  | A
500220  | 2016-05-02 19:00:00  | A

これらは私がすでに見つけた解決策です(Rは前の行の値に基づいて行を削除します

library(data.table)
setDT(df1)[df1[,  if(any(Value == "A")) .I[seq(max(which(Value == "A")))]
                                 else .I[1:.N] , by = Cust_ID]$V1]


library(dplyr)
df1 %>% 
     group_by(Cust_ID) %>% 
     slice(if(any(Value=="A")) seq(max(which(Value=="A"))) else row_number())
Karthik S

これは機能しますか:

> library(dplyr)
> df %>% group_by(Cust_ID) %>% filter(row_number() >= min(which(Value == 'A')))
# A tibble: 8 x 3
# Groups:   Cust_ID [2]
  Cust_ID Date                Value
    <dbl> <chr>               <chr>
1  500219 2016-04-12 16:00:00 A    
2  500219 2016-04-14 11:00:00 A    
3  500219 2016-04-15 12:00:00 B    
4  500219 2016-05-23 09:00:00 B    
5  500219 2016-05-02 19:00:00 C    
6  500220 2016-04-15 12:00:00 A    
7  500220 2016-05-23 09:00:00 A    
8  500220 2016-05-02 19:00:00 A    
> 

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

R前の行の値に基づいて行を削除します

分類Dev

awkは別の列の値に基づいて行を削除します

分類Dev

特定の列の値に基づいて行を削除します

分類Dev

前の行の値に基づいて新しい列を作成し、現在の行を削除します

分類Dev

行の値に基づいて列を削除します

分類Dev

R:別の列の値に基づいて、他の行の値を現在の行に追加します

分類Dev

前の複数の行/列の値に基づいてデータフレームの行を削除します

分類Dev

R:別の列に基づいて行から値を減算します

分類Dev

Rの別の列の行に基づいて列の行を更新します

分類Dev

前の列に基づいて別の列を追加します

分類Dev

別の列の値に基づいて列の行を連結します

分類Dev

別の列の値に基づいて重複を削除します

分類Dev

別の列の前の行と同じ列の現在の行の値に基づいて、awkを使用して新しい列を生成します

分類Dev

別の列の値に基づいて行のみを集計します

分類Dev

R:他の行の値に基づいてリスト内の列の名前を変更します

分類Dev

別の列の数に基づいてグループを削除します(R)

分類Dev

Rの列値に基づいて行を削除する

分類Dev

MySQLの前の行に基づいて値を更新します

分類Dev

条件に基づいて、前の行の値で列を更新します

分類Dev

Rの前の行の値に基づいて列の値を変更する

分類Dev

Rの1つの列の値に基づいて、ほぼ重複する行を削除します

分類Dev

1つの列の値に基づいて行を削除します

分類Dev

パンダ-最初の列の値に基づいて行を削除します

分類Dev

2つの列の値に基づいて行を削除します

分類Dev

他の列値の存在に基づいて重複行を削除します

分類Dev

列の値に基づいて行の重複を削除します

分類Dev

パンダ:最後の行の値に基づいて列を削除します

分類Dev

条件に基づいて別の列から前の行の値を追加して列を更新/作成する

分類Dev

VBAを使用して、ある列の時間と別の列の値に基づいて行を削除する

Related 関連記事

  1. 1

    R前の行の値に基づいて行を削除します

  2. 2

    awkは別の列の値に基づいて行を削除します

  3. 3

    特定の列の値に基づいて行を削除します

  4. 4

    前の行の値に基づいて新しい列を作成し、現在の行を削除します

  5. 5

    行の値に基づいて列を削除します

  6. 6

    R:別の列の値に基づいて、他の行の値を現在の行に追加します

  7. 7

    前の複数の行/列の値に基づいてデータフレームの行を削除します

  8. 8

    R:別の列に基づいて行から値を減算します

  9. 9

    Rの別の列の行に基づいて列の行を更新します

  10. 10

    前の列に基づいて別の列を追加します

  11. 11

    別の列の値に基づいて列の行を連結します

  12. 12

    別の列の値に基づいて重複を削除します

  13. 13

    別の列の前の行と同じ列の現在の行の値に基づいて、awkを使用して新しい列を生成します

  14. 14

    別の列の値に基づいて行のみを集計します

  15. 15

    R:他の行の値に基づいてリスト内の列の名前を変更します

  16. 16

    別の列の数に基づいてグループを削除します(R)

  17. 17

    Rの列値に基づいて行を削除する

  18. 18

    MySQLの前の行に基づいて値を更新します

  19. 19

    条件に基づいて、前の行の値で列を更新します

  20. 20

    Rの前の行の値に基づいて列の値を変更する

  21. 21

    Rの1つの列の値に基づいて、ほぼ重複する行を削除します

  22. 22

    1つの列の値に基づいて行を削除します

  23. 23

    パンダ-最初の列の値に基づいて行を削除します

  24. 24

    2つの列の値に基づいて行を削除します

  25. 25

    他の列値の存在に基づいて重複行を削除します

  26. 26

    列の値に基づいて行の重複を削除します

  27. 27

    パンダ:最後の行の値に基づいて列を削除します

  28. 28

    条件に基づいて別の列から前の行の値を追加して列を更新/作成する

  29. 29

    VBAを使用して、ある列の時間と別の列の値に基づいて行を削除する

ホットタグ

アーカイブ