행에서 조건을 평가하고 조건이 충족되면 특정 값을 반환합니다.

캠 암스트롱

그래서 저는 R에 다소 익숙하지 않으며 알아 내기가 다소 어려운 조건에 따라 열 값을 반환하려고합니다!

작업중인 두 개의 데이터베이스가 있습니다. 하나는 일반적으로 각 행에 단일 유닉스 시간 번호가있는 70,000 개의 행입니다 (df1이라고 부릅니다). 다른 하나는 시작 시간 및 종료 시간 (내가 유닉스 시간 번호로 변환 함)과 여러 참가자의 시작 및 종료 시간 사이에 완료된 활동 이름 (df2라고 함)을 제공합니다.

나는 다음과 같은 df1에서 사용하는 데이터의 참가자에게 df2를 필터링했습니다.

head(df2, 5)
      Name       Period.Name   Start.Time    End.Time    Unix.Start.Time    Unix.End.Time
27  Name 1          Period 1     17:59:40    18:11:00         1579075181       1579075860
53  Name 1          Period 2     18:11:59    18:15:13         1579075919       1579076114
79  Name 1          Period 3     18:17:55    18:23:22         1579076275       1579076603
96  Name 1          Period 4     18:24:58    18:31:56         1579076699       1579077116
131 Name 1          Period 5     18:37:45    18:45:30         1579077465       1579077930

df1은 다음과 같습니다.

head(df1, 20)
   data.point     Label    Timestamp     Name   dateCode
1           0   Label 1   1579075180   Name 1     200115
2           1   Label 1   1579075181   Name 1     200115
3           1   Label 1   1579075182   Name 1     200115
4           2   Label 1   1579075183   Name 1     200115
5           2   Label 1   1579075184   Name 1     200115
6           2   Label 1   1579075185   Name 1     200115
7           1   Label 1   1579075186   Name 1     200115
8           1   Label 1   1579075187   Name 1     200115
9           1   Label 1   1579075188   Name 1     200115
10          3   Label 1   1579075189   Name 1     200115
11          3   Label 1   1579075190   Name 1     200115
12          3   Label 1   1579075191   Name 1     200115
13          3   Label 1   1579075192   Name 1     200115
14          4   Label 1   1579075193   Name 1     200115
15          4   Label 1   1579075194   Name 1     200115
16          4   Label 1   1579075195   Name 1     200115
17          2   Label 1   1579075196   Name 1     200115
18          2   Label 1   1579075197   Name 1     200115
19          1   Label 1   1579075198   Name 1     200115
20          0   Label 1   1579075199   Name 1     200115

df1 $ Timestamp 값이 df2 $ Unix.Start.Time과 df2 $ Unix.End.Time 사이에있는 경우 df2 $ Period.Name에서 각 기간 이름을 반환하는 df1에 새 열을 만들려고합니다.

   data.point     Label    Timestamp     Name   dateCode    Period
1           0   Label 1   1579075180   Name 1     200115      Null
2           1   Label 1   1579075181   Name 1     200115  Period 1
3           1   Label 1   1579075182   Name 1     200115  Period 1
4           2   Label 1   1579075183   Name 1     200115  Period 1
5           2   Label 1   1579075184   Name 1     200115  Period 1
6           2   Label 1   1579075185   Name 1     200115  Period 1
7           1   Label 1   1579075186   Name 1     200115  Period 1
8           1   Label 1   1579075187   Name 1     200115  Period 1
9           1   Label 1   1579075188   Name 1     200115  Period 1
10          3   Label 1   1579075189   Name 1     200115  Period 1
...
1001        3   Label 1   1579075916   Name 1     200115      Null
1002        3   Label 1   1579075917   Name 1     200115      Null
1003        3   Label 1   1579075918   Name 1     200115      Null
1004        4   Label 1   1579075919   Name 1     200115  Period 2
1005        4   Label 1   1579075920   Name 1     200115  Period 2
1006        4   Label 1   1579075921   Name 1     200115  Period 2
1007        2   Label 1   1579075922   Name 1     200115  Period 2
1008        2   Label 1   1579075923   Name 1     200115  Period 2
1009        1   Label 1   1579075924   Name 1     200115  Period 2
1010        0   Label 1   1579075925   Name 1     200115  Period 2

이것은 일주일에 몇 번 완료되는 프로세스이며 두 데이터 프레임의 길이가 다를 때마다 타임 스탬프도 다릅니다.

ifelse 함수를 시도했지만 모든 df2 유닉스 시점에서 df1 $ Timestamp 값을 평가하고 df1 $ Timestamp가 맞는 기간 이름에서 행 값을 반환하는 방법을 알아낼 수 없었습니다.

미리 감사드립니다!

로낙 샤

패키지 fuzzy_.*_join에서 사용해보십시오 fuzz_join.

fuzzyjoin::fuzzy_inner_join(df1, df2, 
      by = c('Name' = 'Name', 'Timestamp' = 'Unix.Start.Time', 
              'Timestamp' = 'Unix.End.Time'), match_fun = list(`==`, `>=`, `<=`))

또는 표준 조인을 시도한 다음 filter기본 R에서 수행 할 수있는 값을 시도 할 수 있습니다.

subset(merge(df1, df2, by = 'Name'), 
             Timestamp >= Unix.Start.Time & Timestamp <= Unix.End.Time)

또는 dplyr

library(dplyr)
inner_join(df1, df2, by = 'Name') %>%
   filter(Timestamp >= Unix.Start.Time & Timestamp <= Unix.End.Time)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

특정 조건의 행을 유지하고이 조건이 충족되지 않으면 다른 행을 제거하는 방법이 있습니까?

분류에서Dev

If 조건이 충족되면 json에서 Key 값을 가져옵니다.

분류에서Dev

SAS에서 특정 조건이 충족되면 행 그룹에 플래그 지정을 중지하려면 어떻게해야합니까?

분류에서Dev

pandas에서 조건이 충족되면 아래 행의 값을 반환합니다.

분류에서Dev

조건이 충족되면 특정 배열에서 임의의 답을 얻어야합니다.

분류에서Dev

특정 조건을 충족 할 때마다 행 사이에서 가장 높은 값을 찾으려면 어떻게해야합니까?

분류에서Dev

조건이 충족되기 전에 행의 값을 반환하는 정렬 된 행으로 집계 스파크

분류에서Dev

다른 열의 조건이 충족되지 않으면 Pandas의 열에서 값을 반환하려고합니다.

분류에서Dev

IF 문에서 특정 조건이 충족되면 PHP 스크립트 실행을 중지하는 방법은 무엇입니까?

분류에서Dev

열에서 조건이 충족되면 팬더 n 행을 삭제하고 다음 섹션으로 이동

분류에서Dev

Python에서 특정 조건을 충족하는 행 사이에서 행 선택

분류에서Dev

조건이 충족되면 새 행을 추가하는 Excel VBA

분류에서Dev

문자열을 반복하고 특정 조건이 충족되는지 확인

분류에서Dev

조건이 충족되면 MySQL이 행을 잡고 그렇지 않으면 다른 행을 가져옵니다.

분류에서Dev

세 열이 정확히 일치하면 Excel에서 countifs 조건을 사용하여 값을 반환합니다.

분류에서Dev

R : 조건이 충족되면 데이터 프레임에 새 행을 추가 한 다음 최종 값을 반복합니다.

분류에서Dev

특정 조건이 충족되면 for 루프 내에서 스크래피 스파이더의 항복을 중지하는 방법은 무엇입니까?

분류에서Dev

특정 조건이 충족되는 경우 행을 제거하는 방법 (Python)

분류에서Dev

특정 조건이 충족되면 Tkinter 위젯을 구성하는 방법은 무엇입니까?

분류에서Dev

특정 조건이 충족되면 확인란을 선택하십시오.

분류에서Dev

Tkinter, 특정 조건이 충족되면 창을 만드시겠습니까?

분류에서Dev

파이썬 데이터 프레임을 사용하면 조건을 충족하는 각 행에 조건을 충족하는 행 수 열을 추가합니다.

분류에서Dev

Python pandas : 특정 행이 조건을 충족하는 열 선택

분류에서Dev

MySQL에서 특정 조건이 충족 될 때 행을 제외하는 방법

분류에서Dev

R 데이터에서 조건이 충족되면 고유 한 항목을 가져옵니다.

분류에서Dev

Oracle SQL Developer-조건이 충족되면 ID에 대해 여러 행을 반환하는 CASE 문

분류에서Dev

특정 조건이 충족되면 행의 변수 값을 대체하고 전체 데이터 프레임에 대해 이것을 반복하는 방법이 있습니까?

분류에서Dev

특정 조건이 충족되는 경우 DataFrame 값을 분할하고 결합하는 방법

분류에서Dev

하나의 고유 ID가 서로 다른 행의 조건을 충족하는 SQL 쿼리에서 행을 반환하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    특정 조건의 행을 유지하고이 조건이 충족되지 않으면 다른 행을 제거하는 방법이 있습니까?

  2. 2

    If 조건이 충족되면 json에서 Key 값을 가져옵니다.

  3. 3

    SAS에서 특정 조건이 충족되면 행 그룹에 플래그 지정을 중지하려면 어떻게해야합니까?

  4. 4

    pandas에서 조건이 충족되면 아래 행의 값을 반환합니다.

  5. 5

    조건이 충족되면 특정 배열에서 임의의 답을 얻어야합니다.

  6. 6

    특정 조건을 충족 할 때마다 행 사이에서 가장 높은 값을 찾으려면 어떻게해야합니까?

  7. 7

    조건이 충족되기 전에 행의 값을 반환하는 정렬 된 행으로 집계 스파크

  8. 8

    다른 열의 조건이 충족되지 않으면 Pandas의 열에서 값을 반환하려고합니다.

  9. 9

    IF 문에서 특정 조건이 충족되면 PHP 스크립트 실행을 중지하는 방법은 무엇입니까?

  10. 10

    열에서 조건이 충족되면 팬더 n 행을 삭제하고 다음 섹션으로 이동

  11. 11

    Python에서 특정 조건을 충족하는 행 사이에서 행 선택

  12. 12

    조건이 충족되면 새 행을 추가하는 Excel VBA

  13. 13

    문자열을 반복하고 특정 조건이 충족되는지 확인

  14. 14

    조건이 충족되면 MySQL이 행을 잡고 그렇지 않으면 다른 행을 가져옵니다.

  15. 15

    세 열이 정확히 일치하면 Excel에서 countifs 조건을 사용하여 값을 반환합니다.

  16. 16

    R : 조건이 충족되면 데이터 프레임에 새 행을 추가 한 다음 최종 값을 반복합니다.

  17. 17

    특정 조건이 충족되면 for 루프 내에서 스크래피 스파이더의 항복을 중지하는 방법은 무엇입니까?

  18. 18

    특정 조건이 충족되는 경우 행을 제거하는 방법 (Python)

  19. 19

    특정 조건이 충족되면 Tkinter 위젯을 구성하는 방법은 무엇입니까?

  20. 20

    특정 조건이 충족되면 확인란을 선택하십시오.

  21. 21

    Tkinter, 특정 조건이 충족되면 창을 만드시겠습니까?

  22. 22

    파이썬 데이터 프레임을 사용하면 조건을 충족하는 각 행에 조건을 충족하는 행 수 열을 추가합니다.

  23. 23

    Python pandas : 특정 행이 조건을 충족하는 열 선택

  24. 24

    MySQL에서 특정 조건이 충족 될 때 행을 제외하는 방법

  25. 25

    R 데이터에서 조건이 충족되면 고유 한 항목을 가져옵니다.

  26. 26

    Oracle SQL Developer-조건이 충족되면 ID에 대해 여러 행을 반환하는 CASE 문

  27. 27

    특정 조건이 충족되면 행의 변수 값을 대체하고 전체 데이터 프레임에 대해 이것을 반복하는 방법이 있습니까?

  28. 28

    특정 조건이 충족되는 경우 DataFrame 값을 분할하고 결합하는 방법

  29. 29

    하나의 고유 ID가 서로 다른 행의 조건을 충족하는 SQL 쿼리에서 행을 반환하려면 어떻게해야합니까?

뜨겁다태그

보관