>

데이터 프레임 대여를 백분율을 기준으로 2 개의 열로 나누려고합니다.

| 그룹 | 백분율 |

| 0 고용 | 60 % |

| 0 다음달 고용 | 65 % |

| 0 또는 1 고용 | 68 % |

| next_month에 0 또는 1 고용 | 70 % |

| 1 고용 | 79 % |

| 1 명 또는 2 명 | 80 % |

| 2 은퇴 | 85 % |

| 2 또는 3 발사 | 92 % |

| 3 은퇴하지 않음 | 96 % |

  • 2 개의 열 그룹을 원하고 의사 결정 출력이 있어야합니다 (열 백분율 및 결정은 변경되지 않아야 함, 백분율이 60 %에서 69 % (3 행) 사이 인 경우 열 그룹은 0이어야 함) 비율은 70 % ~ 79 % (4 번째 행)이며, 비율이 80 % ~ 89 % 사이이면 그룹이 2 여야하고, 백분율이 90 % ~ 99 % 사이이면 그룹이 3이어야 함)

| 그룹 | 결정 | 백분율

<시간>

| 0 | 고용 된 | 60 %

| 0 | next_month에 고용 | 65 %

| 0 | 고용 된 | 68 %

| 1 | next_month에 고용 | 70 %

| 1 | 고용 된 | 79 %

| 2 | 직원 | 80 % |

| 2 | 은퇴 | 85 % |

| 3 | 해고 | 92 % |

| 3 | 미사용 | 96 % |

내 코드 :               foo<-str_split_fixed (고용 $group, "or", 2)

누구든지 도울 수 있습니다. 미리 감사드립니다

  • 답변 # 1

    tidyverse 를 사용할 수 있습니다 extract  ( tidyr 에서) ) '그룹'을 '그룹'과 '결정'으로 나눈 다음 replace  '백분율'( parse_number 로 숫자 추출) 인 경우 '그룹'값을 1로 설정   readr 에서 )가 90보다 크거나 같습니다.

    library(tidyverse)
    df1 %>%
        extract(group, into = c('group', 'decision'), "^(\\d+).*(hired.*)") %>% 
        mutate(group = replace(group, parse_number(percentage)>=90, 1))
    #    group         decision percentage
    #1     0            hired        80%
    #2     0 hired next_month        85%
    #3     0            hired        88%
    #4     1 hired next_month        90%
    #5     1            hired        99%
    
    
    데이터
    df1 <- structure(list(group = c("0 hired", "0 hired next_month", "0 or 1 hired", 
    "0 or 1 hired next_month", "1 hired"), percentage = c("80%", 
    "85%", "88%", "90%", "99%")), .Names = c("group", "percentage"
    ), class = "data.frame", row.names = c(NA, -5L))
    
    

관련 자료

  • 이전 sql - 원래 테이블에서 널값을 텍스트로 바꾸십시오
  • 다음 Facebook 페이지 작성 API 스로틀 한계