요약 (dplyr)의 결과를 사용하여 원래 데이터 프레임 변경

파비오

POSIXct datetimes (~ 10 년의 시간별 데이터) 열이있는 다소 큰 데이터 프레임이 있습니다. 일광 절약 기간에 해당하는 모든 행에 플래그를 지정합니다. 예를 들어 일광 근무 시간이 '2000-04-02 03:00:00'(DOY = 93)에 시작하는 경우 DOY = 93의 이전 두 시간에 플래그를 지정할 수 있기를 바랍니다. 나는 dplyr의 초보자이지만 가능한 한이 패키지를 사용하고 가능한 한 for 루프피할 것 입니다.

예를 들면 :

library(lubridate)
sd = ymd('2000-01-01',tz="America/Denver")
ed = ymd('2005-12-31',tz="America/Denver")
span = data.frame(date=seq(from=sd,to=ed, by="hour"))
span$YEAR = year(span$date)
span$DOY = yday(span$date)
span$DLS = dst(span$date)

일광 절약이 적용되는 연중 다른 날짜를 찾으려면 dplyr을 사용합니다.

library(dplyr)
limits = span %.% group_by(YEAR) %.% summarise(minDOY=min(DOY[DLS]),maxDOY=max(DOY[DLS]))

그것은 준다

      YEAR minDOY maxDOY
    1 2000     93    303
    2 2001     91    301
    3 2002     97    300
    4 2003     96    299
    5 2004     95    305
    6 2005     93    303

이제 비효율적 인 for-loop를 사용하지 않고 범위 데이터 프레임 에서 위의 결과를 '파이프'합니다 .

해결책 1

@aosmith의 도움으로 문제는 단 두 개의 명령으로 해결할 수 있습니다 (그리고 '솔루션 2'에서와 같이 inner_join을 피함).

 limits = span %>% group_by(YEAR) %>% mutate(minDOY=min(DOY[DLS]),maxDOY=max(DOY[DLS]),CHECK=FALSE)

 limits$CHECK[(limits2$DOY >= limits$minDOY) & (limits$DOY <= limits$maxDOY) ] = TRUE      

해결 방법 2

@beetroot와 @ matthew-plourde의 도움으로 문제가 해결되었습니다. 내부 결합이 누락되었습니다.

limits = span %>% group_by(YEAR) %>% summarise(minDOY=min(DOY[DLS]),maxDOY=max(DOY[DLS])) %>% inner_join(span, by='YEAR')

그런 다음 일광 절약 일에 적합한 값을 채우기 위해 새 열 (CHECK)을 추가했습니다.

limits$CHECK = FALSE
limits$CHECK[(limits$DOY >= limits$minDOY) & (limits$DOY <= limits$maxDOY) ] = TRUE
매튜 Plourde

@beetroot가 주석에서 지적했듯이 조인으로이를 수행 할 수 있습니다.

limits = span %>% 
   group_by(YEAR) %>% 
   summarise(minDOY=min(DOY[DLS]),maxDOY=max(DOY[DLS])) %>%
   inner_join(span, by='YEAR')
#    YEAR minDOY maxDOY                date DOY   DLS
# 1  2000     93    303 2000-01-01 00:00:00   1 FALSE
# 2  2000     93    303 2000-01-01 01:00:00   1 FALSE
# 3  2000     93    303 2000-01-01 02:00:00   1 FALSE
# 4  2000     93    303 2000-01-01 03:00:00   1 FALSE
# 5  2000     93    303 2000-01-01 04:00:00   1 FALSE
# 6  2000     93    303 2000-01-01 05:00:00   1 FALSE
# 7  2000     93    303 2000-01-01 06:00:00   1 FALSE
# 8  2000     93    303 2000-01-01 07:00:00   1 FALSE
# 9  2000     93    303 2000-01-01 08:00:00   1 FALSE
# 10 2000     93    303 2000-01-01 09:00:00   1 FALSE

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

R : 요약, 드롭 열 목록에서 데이터 프레임의 이름을 변경하고 결과를 env에 저장

분류에서Dev

Python / Pandas : 일부 요소 일치를 사용하여 데이터 프레임의 모양 변경 및 병합

분류에서Dev

for 루프를 사용하여 데이터 프레임의 열 변경

분류에서Dev

lapply를 사용하여 데이터 프레임 목록의 열 이름 변경

분류에서Dev

group_by ()를 사용하여 dplyr로 데이터 프레임에 대한 요약 통계 계산

분류에서Dev

dplyr을 사용하여 특정 행의 데이터 프레임 값 변경

분류에서Dev

적용된 결과를 원래 데이터 프레임으로 다시 변환하는 Pandas

분류에서Dev

데이터 프레임의 일부 열에 함수를 적용하고 결과를 원래 데이터 프레임에 저장합니다.

분류에서Dev

pandas-외래 키를 사용하여 1 개의 데이터 프레임을 2 개의 데이터 프레임으로 변환

분류에서Dev

dict를 사용하여 월 데이터 프레임 값 변경

분류에서Dev

정규식을 사용하여 목록의 데이터 프레임에 대한 요소 이름 변경

분류에서Dev

lapply를 사용하여 열 이름이 다른 데이터 프레임 목록의 열 이름 변경

분류에서Dev

StringIndexer를 적용하여 PySpark 데이터 프레임의 열 변경

분류에서Dev

인덱스 위치를 변경하지 않고 데이터 프레임을 다른 데이터 프레임의 처음 2 개 열과 결합

분류에서Dev

3 개의 데이터 프레임을 연결하면 원본의 열 유형이 변경됩니다.

분류에서Dev

결 측값이있는 테이블을 원래 테이블과 동일한 구조의 데이터 프레임으로 변환 하시겠습니까?

분류에서Dev

원래 데이터 프레임의 총 행 수를 기준으로 데이터 프레임을 두 데이터 프레임으로 분할하는 방법

분류에서Dev

함수의 출력 벡터를 원래 데이터 프레임에 적용

분류에서Dev

타임 스탬프 (From_Time 및 To_Time)를 사용하여 0이 아닌 값 또는 Pandas 데이터 프레임의 값을 요약합니다.

분류에서Dev

다른 데이터 프레임을 기반으로 데이터 프레임의 요소를 변경하는 방법은 무엇입니까?

분류에서Dev

부울 데이터 프레임을 사용하여 데이터 프레임의 값 변경

분류에서Dev

dplyr을 사용하여 R 데이터 프레임의 마지막 열 마지막 행에서 값 변경

분류에서Dev

목록 크기가 일치하지 않는 목록의 결과를 사용하여 NULLS로 데이터 프레임을 만들 수 있기를 원합니다.

분류에서Dev

대체를 지정하는 데이터 프레임으로 데이터 프레임의 모든 값 변경

분류에서Dev

데이터 프레임 열을 사용하여 요인 수준 변경

분류에서Dev

Pandas 데이터 프레임의 범주 형 데이터를 사용하여 변수 이름 바꾸기

분류에서Dev

R의 다른 데이터 프레임에서 변수 별 값을 사용하여 함수를 적용하는 데이터 프레임의 변수 값 수정

분류에서Dev

R dplyr을 사용하여 전체 데이터 프레임을 문자 클래스로 변환

분류에서Dev

맵 기능을 사용하여 데이터 프레임의 인코딩 변경

Related 관련 기사

  1. 1

    R : 요약, 드롭 열 목록에서 데이터 프레임의 이름을 변경하고 결과를 env에 저장

  2. 2

    Python / Pandas : 일부 요소 일치를 사용하여 데이터 프레임의 모양 변경 및 병합

  3. 3

    for 루프를 사용하여 데이터 프레임의 열 변경

  4. 4

    lapply를 사용하여 데이터 프레임 목록의 열 이름 변경

  5. 5

    group_by ()를 사용하여 dplyr로 데이터 프레임에 대한 요약 통계 계산

  6. 6

    dplyr을 사용하여 특정 행의 데이터 프레임 값 변경

  7. 7

    적용된 결과를 원래 데이터 프레임으로 다시 변환하는 Pandas

  8. 8

    데이터 프레임의 일부 열에 함수를 적용하고 결과를 원래 데이터 프레임에 저장합니다.

  9. 9

    pandas-외래 키를 사용하여 1 개의 데이터 프레임을 2 개의 데이터 프레임으로 변환

  10. 10

    dict를 사용하여 월 데이터 프레임 값 변경

  11. 11

    정규식을 사용하여 목록의 데이터 프레임에 대한 요소 이름 변경

  12. 12

    lapply를 사용하여 열 이름이 다른 데이터 프레임 목록의 열 이름 변경

  13. 13

    StringIndexer를 적용하여 PySpark 데이터 프레임의 열 변경

  14. 14

    인덱스 위치를 변경하지 않고 데이터 프레임을 다른 데이터 프레임의 처음 2 개 열과 결합

  15. 15

    3 개의 데이터 프레임을 연결하면 원본의 열 유형이 변경됩니다.

  16. 16

    결 측값이있는 테이블을 원래 테이블과 동일한 구조의 데이터 프레임으로 변환 하시겠습니까?

  17. 17

    원래 데이터 프레임의 총 행 수를 기준으로 데이터 프레임을 두 데이터 프레임으로 분할하는 방법

  18. 18

    함수의 출력 벡터를 원래 데이터 프레임에 적용

  19. 19

    타임 스탬프 (From_Time 및 To_Time)를 사용하여 0이 아닌 값 또는 Pandas 데이터 프레임의 값을 요약합니다.

  20. 20

    다른 데이터 프레임을 기반으로 데이터 프레임의 요소를 변경하는 방법은 무엇입니까?

  21. 21

    부울 데이터 프레임을 사용하여 데이터 프레임의 값 변경

  22. 22

    dplyr을 사용하여 R 데이터 프레임의 마지막 열 마지막 행에서 값 변경

  23. 23

    목록 크기가 일치하지 않는 목록의 결과를 사용하여 NULLS로 데이터 프레임을 만들 수 있기를 원합니다.

  24. 24

    대체를 지정하는 데이터 프레임으로 데이터 프레임의 모든 값 변경

  25. 25

    데이터 프레임 열을 사용하여 요인 수준 변경

  26. 26

    Pandas 데이터 프레임의 범주 형 데이터를 사용하여 변수 이름 바꾸기

  27. 27

    R의 다른 데이터 프레임에서 변수 별 값을 사용하여 함수를 적용하는 데이터 프레임의 변수 값 수정

  28. 28

    R dplyr을 사용하여 전체 데이터 프레임을 문자 클래스로 변환

  29. 29

    맵 기능을 사용하여 데이터 프레임의 인코딩 변경

뜨겁다태그

보관