>

와이즈 위즈 , id, dfL 내에서 일련의 연속 번호를 식별하려고합니다. 및 세그먼트, id  변수 shift 에서 . 숫자 PM 가 포함 된 일련의 연속 숫자를 찾고 있습니다.  그리고 -1  그리고 1 의 길이가  이상.

데이터가 포함 된 상황을 보여줍니다.

4

처음에는 이와 같은 넓은 형식의 데이터가 있습니다.

# install.packages(c("tidyverse"), dependencies = TRUE)
library(tibble)

dfa <- tibble(id = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7), PM01 = c(NA, -3, NA, -2, -1, 1, 2, NA, NA, -2, -1, NA, -3, -2, -1, 1, 2, 3, NA, NA, -2, -1, 1, 2, 3, NA, NA, NA, NA, NA), PM02 = c(1, -2, NA, NA, NA, -3, -2, -1, NA, 1, 2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, -1, 1, 2, NA, NA, NA, NA, NA), PM03 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, -3, -2, -1, 1, 2, 3, NA, NA) );dfa #> # A tibble: 30 x 4 #> id PM01 PM02 PM03 #> <dbl> <dbl> <dbl> <dbl> #> 1 0 NA 1 NA #> 2 0 -3 -2 NA #> 3 0 NA NA NA #> 4 0 -2 NA NA #> 5 0 -1 NA NA #> 6 0 1 -3 NA #> 7 0 2 -2 NA #> 8 0 NA -1 NA #> 9 0 NA NA NA #> 10 0 -2 1 NA #> # ... with 20 more rows 에서  행 PM01  일치합니다.

와이즈 비츠  데이터는 하나의 벡터 만 가지고 있기 때문에 오래갑니다. 이렇게

4-7

내가 찾고있는 것을 설명하려고했지만 원하는 결과 만 보여 주면 더 명확해질 수 있다는 것을 알게되었습니다. 이렇게

tidyr::gather

# install.packages(c("tidyverse"), dependencies = TRUE) library(tidyr) dfL <- dfa %>% select(id, PM01:PM03) %>% gather(shift, PM, PM01:PM03, na.rm = FALSE) %>% arrange(id, shift) %>% group_by(id, shift)
  • 답변 # 1

    효율에 관계없이이 작업을 수행 할 수 있습니다. dfL 에서 시작 연속 NA 를 식별하는 새 그룹 변수를 작성하십시오.  또는 비 - NA 청크를 선택한 다음 각 청크 내의 조건을 확인하여 조건 열을 추가합니다.

    dfL %>% 
        group_by(g = cumsum(is.na(PM) != lag(is.na(PM), default=0)), add=T) %>% 
        mutate(TF = n() >= 4 && all(c(-1,1) %in% PM)) %>% 
        ungroup() %>% select(-g)
    # A tibble: 90 x 4
    #      id shift    PM    TF
    #   <dbl> <chr> <dbl> <lgl>
    # 1     0  PM01    NA FALSE
    # 2     0  PM01    -3 FALSE
    # 3     0  PM01    NA FALSE
    # 4     0  PM01    -2  TRUE
    # 5     0  PM01    -1  TRUE
    # 6     0  PM01     1  TRUE
    # 7     0  PM01     2  TRUE
    # 8     0  PM01    NA FALSE
    # 9     0  PM01    NA FALSE
    #10     0  PM01    -2 FALSE
    # ... with 80 more rows
    
    

관련 자료

  • 이전 javascript - 내용보다 앞에 나오는 Iframe의 스크롤 막대 스크롤바 높이를 내용의 높이로 설정하는 방법이 있습니까?
  • 다음 sql - Power BI에서 구분 기호로 여러 열을 행으로 분할하는 방법은 무엇입니까?