dplyr 내부의 조건부 케이스

비 라이스

조건부로 열을 재정렬하려고하지만 함수 매개 변수에 의해 지정된 경우에만 해당됩니다. dplyr 문에 조건문을 추가하는 방법을 보여주는 다른 예제 (예 : this )가 있지만 작동하지 않습니다.

다음과 같은 두 개의 열이있는 데이터 세트가 있습니다.

Role
1 Primary
2 Secondary
3 Primary
4 Primary

Zap
1 Enabled
2 Disabled
3 Enabled
4 Enabled

그리고 내 코드는 다음과 같습니다.

my_bar_chart <- function(data, column, title, change_order=FALSE){
  toReturn <- data %>% 
    group_by({{column}}) %>% 
    summarize(count = n()) %>% 
    mutate(percent = count/sum(count)) %>% 
    mutate(column = reorder({{column}}, -count, FUN=identity)) %>%
    ggplot(aes(x=column, y=count)) +
    xlab(title)+
    geom_col(fill='#cccccc') +
    geom_text(aes(label = paste0(round(100 * percent, 1), "%")))
  return(toReturn)
}
p1 <- my_bar_chart(mydata, Role, "EA5 Controller Role", TRUE)
p2 <- my_bar_chart(mydata, Zap, "Another title", FALSE)

그리고 그것은 잘 작동하지만 이제 작동하려고 할 때 두 번째 mutate 문이 TRUE를 함수 change_order 매개 변수에 전달할 때 조건부로 재정렬합니다. 작동하지 않는 조건부 돌연변이는 다음과 같습니다.

mutate(column = case_when(
      change_order == TRUE ~ reorder({{column}}, -count, FUN=identity),
      change_order == FALSE ~ column)) %>%

이 오류가 발생합니다.

eval_tidy (pair $ rhs, env = default_env) 오류 : 'Role'개체를 찾을 수 없습니다.

내가 뭘 잘못하고 있는지 아이디어가 있습니까?

Akrun

두 번째 조건은 동일해야하는 객체 와 함께 column내부가 아닌 반환입니다.{{}}type

my_bar_chart <- function(data, column, title, change_order=FALSE){
  data %>% 
    group_by({{column}}) %>% 
    summarize(count = n()) %>% 
    mutate(percent = count/sum(count),
           !! rlang::enquo(column) := case_when(change_order ~ 
        reorder({{column}}, -count, FUN=identity), TRUE ~ factor({{column}})) ) %>%
    ggplot(aes(x={{column}}, y=count)) +
      xlab(title)+
      geom_col(fill='#cccccc') +
      geom_text(aes(label = paste0(round(100 * percent, 1), "%")))



    }

-테스트

my_bar_chart(mydata, Role, "EA5 Controller Role", TRUE)

여기에 이미지 설명 입력


(가) 있습니다 reorder내에서 삭제 될 것입니다 해당 열 몇 가지 특성을 창조하고 case_when는 모두 표현이 동일한 구조의 출력을 기대하면서. 대신 if/else여기에서 사용할 수 있습니다 .

my_bar_chart <- function(data, column, title, change_order=FALSE){
 out <-  data %>% 
    group_by({{column}}) %>% 
    summarize(count = n()) %>% 
    mutate(percent = count/sum(count),
           !! rlang::enquo(column) := if(change_order)
        reorder({{column}}, -count, FUN=identity) else {{column}} )

 print(str(out))
 ggplot(out, aes(x={{column}}, y=count)) +
   xlab(title)+
   geom_col(fill='#cccccc') +
   geom_text(aes(label = paste0(round(100 * percent, 1), "%")))








    }

-테스트

print데이터 세트 구조의 출력 확인

my_bar_chart(mydata, Role, "EA5 Controller Role", TRUE) 
#Classes ‘tbl_df’, ‘tbl’ and 'data.frame':  2 obs. of  3 variables:
# $ Role   : Factor w/ 2 levels "Primary","Secondary": 1 2
#  ..- attr(*, "scores")= int [1:2(1d)] -3 -1
#  .. ..- attr(*, "dimnames")=List of 1
#  .. .. ..$ : chr  "Primary" "Secondary"
# $ count  : int  3 1
# $ percent: num  0.75 0.25
NULL

my_bar_chart(mydata, Role, "EA5 Controller Role", FALSE)
#Classes ‘tbl_df’, ‘tbl’ and 'data.frame':  2 obs. of  3 variables:
# $ Role   : chr  "Primary" "Secondary"
# $ count  : int  3 1
# $ percent: num  0.75 0.25

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

dplyr의 조건부 합산

분류에서Dev

dplyr의 조건부 대체

분류에서Dev

SQL 쿼리의 조건부 케이스

분류에서Dev

dplyr에 의한 조건부 돌연변이

분류에서Dev

dplyr의 across () 내부의 열 이름 참조

분류에서Dev

dplyr을 사용하여 조건부로 열 이름 설정

분류에서Dev

group_by로 R dplyr 조건부 돌연변이

분류에서Dev

양식 이메일 본문 내부의 조건부 PHP

분류에서Dev

for 문 내부의 조건부 이름 바꾸기

분류에서Dev

dplyr에서 조건부로 열 변경

분류에서Dev

dplyr의 조건부 합계 (예 : "다른 행에서 방금 업데이트 된 값 참조"-Excel에서)

분류에서Dev

WHEN 내부의 SQL 케이스

분류에서Dev

Excel 조건부 서식이 물음표 이스케이프

분류에서Dev

Excel 조건부 서식이 물음표 이스케이프

분류에서Dev

조건에 따라 데이터 부분 집합 및 이름 변경, Dplyr 내에서 기간 찾기

분류에서Dev

Knockout JS : 조건부 스위치 케이스

분류에서Dev

스위치 케이스에서 Linq에 조건부 값 추가

분류에서Dev

내 부모 컨테이너의 조건부 클래스 이름에 반응

분류에서Dev

dplyr을 사용하여 여러 변수를 조건부로 업데이트

분류에서Dev

데이터 프레임 열에 조건부 케이스 적용

분류에서Dev

SQL 내부 조인과 케이스

분류에서Dev

조건부 내 조건부

분류에서Dev

JS 성능 : 조건 내부의 이벤트 처리기와 이벤트 처리기 내부의 조건

분류에서Dev

조건부 내부 조인 문에서 둘 이상의 값 반환 (VBA / SQL)

분류에서Dev

N1QL couchbase의 케이스 조건에서 내부 요소 합계를 사용하려는 경우

분류에서Dev

VBA Excel 조건부 적절한 케이스 서식

분류에서Dev

케이스가있는 조건부 업로드

분류에서Dev

dplyr : group_by 이후의 요약 내부 파이프

분류에서Dev

SPARK 1.2.0 SQLContext에는 오라클의 케이스 조건과 같은 조건부 값이 필요합니다.

Related 관련 기사

  1. 1

    dplyr의 조건부 합산

  2. 2

    dplyr의 조건부 대체

  3. 3

    SQL 쿼리의 조건부 케이스

  4. 4

    dplyr에 의한 조건부 돌연변이

  5. 5

    dplyr의 across () 내부의 열 이름 참조

  6. 6

    dplyr을 사용하여 조건부로 열 이름 설정

  7. 7

    group_by로 R dplyr 조건부 돌연변이

  8. 8

    양식 이메일 본문 내부의 조건부 PHP

  9. 9

    for 문 내부의 조건부 이름 바꾸기

  10. 10

    dplyr에서 조건부로 열 변경

  11. 11

    dplyr의 조건부 합계 (예 : "다른 행에서 방금 업데이트 된 값 참조"-Excel에서)

  12. 12

    WHEN 내부의 SQL 케이스

  13. 13

    Excel 조건부 서식이 물음표 이스케이프

  14. 14

    Excel 조건부 서식이 물음표 이스케이프

  15. 15

    조건에 따라 데이터 부분 집합 및 이름 변경, Dplyr 내에서 기간 찾기

  16. 16

    Knockout JS : 조건부 스위치 케이스

  17. 17

    스위치 케이스에서 Linq에 조건부 값 추가

  18. 18

    내 부모 컨테이너의 조건부 클래스 이름에 반응

  19. 19

    dplyr을 사용하여 여러 변수를 조건부로 업데이트

  20. 20

    데이터 프레임 열에 조건부 케이스 적용

  21. 21

    SQL 내부 조인과 케이스

  22. 22

    조건부 내 조건부

  23. 23

    JS 성능 : 조건 내부의 이벤트 처리기와 이벤트 처리기 내부의 조건

  24. 24

    조건부 내부 조인 문에서 둘 이상의 값 반환 (VBA / SQL)

  25. 25

    N1QL couchbase의 케이스 조건에서 내부 요소 합계를 사용하려는 경우

  26. 26

    VBA Excel 조건부 적절한 케이스 서식

  27. 27

    케이스가있는 조건부 업로드

  28. 28

    dplyr : group_by 이후의 요약 내부 파이프

  29. 29

    SPARK 1.2.0 SQLContext에는 오라클의 케이스 조건과 같은 조건부 값이 필요합니다.

뜨겁다태그

보관