여러 열에서 그룹의 값 선택

user5249203

내 데이터는 다음과 같은 구조를 가지고 있습니다. 각 국가 및 ID에 대해 배송 열 (중국 및 홍콩)에서 그룹에 중국과 홍콩이 모두있는 경우 새 열 배송에 홍콩이 있어야합니다 (그룹에 중국이있는 경우), 새 열 배송에는 중국이 있어야합니다 (그룹에 중국이있는 경우). HK, 새 열 배송에는 해당 없음 인 경우 HK가 있어야하며 NA 여야합니다.

M, Q 및 Y 열과 유사합니다. 주어진 그룹에 대한 값이있는 열에 따라 단일 열 기간에 속해야합니다.

아래에 내 시도를 포함했습니다. 하지만 더 나은 방법이 있는지 궁금합니다. true 또는 false 대신 shipment_hk또는 shipment_china. 사용자가 읽을 수 있도록합니다. 또한 분기 별 가치는 ifelse 조건에서 작동하지 않는 것 같습니다.

library(dplyr)
sample_df %>% tibble::as.tibble() %>% 
dplyr::group_by(country,id) %>% 
dplyr::mutate(periods = ifelse(Monthly == "Monthly", "monthly", ifelse(Quarterly == "Quarterly", "quarterly", ifelse(Yearly == "Yearly", "yearly", "")))) %>%
dplyr::mutate(shipment = any(shipment_hk %in% "send to hk")) %>% 
dplyr::select(country,id, type,periods,shipment)
#> # A tibble: 20 x 5
#> # Groups:   country, id [7]
#>    country id     type        periods shipment
#>    <chr>   <chr>  <chr>       <chr>   <lgl>   
#>  1 group_1 2.1    ""          <NA>    FALSE   
#>  2 group_1 2.1    "bar"       monthly FALSE   
#>  3 group_1 2.1    "chocolate" monthly FALSE   
#>  4 group_1 2.17   ""          <NA>    FALSE   
#>  5 group_1 2.17   "bar"       monthly FALSE   
#>  6 group_1 2.17   "chocolate" monthly FALSE   
#>  7 group_1 2.2    ""          <NA>    TRUE    
#>  8 group_1 2.2    ""          <NA>    TRUE    
#>  9 group_1 2.2    "bar"       <NA>    TRUE    
#> 10 group_1 2.2    "chocolate" <NA>    TRUE    
#> 11 group_2 1      ""          <NA>    TRUE    
#> 12 group_2 1      ""          <NA>    TRUE    
#> 13 group_2 1      "bar"       monthly TRUE    
#> 14 group_2 2.1    ""          <NA>    FALSE   
#> 15 group_2 2.1    "bar"       monthly FALSE   
#> 16 group_2 2.12.1 ""          <NA>    TRUE    
#> 17 group_2 2.12.1 ""          <NA>    TRUE    
#> 18 group_2 2.12.1 "donut"     <NA>    TRUE    
#> 19 group_2 2.12.2 ""          <NA>    FALSE   
#> 20 group_2 2.12.2 "bar"       <NA>    FALSE

reprex 패키지 (v0.3.0)로 2020-11-03에 생성


dput(sample_df)
structure(list(country = c("group_1", "group_1", "group_1", "group_1", 
"group_1", "group_1", "group_1", "group_1", "group_1", "group_1", 
"group_2", "group_2", "group_2", "group_2", "group_2", "group_2", 
"group_2", "group_2", "group_2", "group_2", "group_3", "group_3", 
"group_3", "group_3", "group_3", "group_3"), id = c("2.1", "2.1", 
"2.1", "2.17", "2.17", "2.17", "2.2", "2.2", "2.2", "2.2", "1", 
"1", "1", "2.1", "2.1", "2.12.1", "2.12.1", "2.12.1", "2.12.2", 
"2.12.2", "2.17", "2.17", "2.17", "2.18", "2.18", "2.18"), type = c("", 
"bar", "chocolate", "", "bar", "chocolate", "", "", "bar", "chocolate", 
"", "", "bar", "", "bar", "", "", "donut", "", "bar", "tiles", 
"tiles", "tiles", "tiles", "tiles", "tiles"), shipment_china = c("send to china", 
NA, NA, "send to china", NA, NA, "send to china", NA, NA, NA, 
"send to china", NA, NA, "send to china", NA, "send to china", 
NA, NA, "send to china", NA, NA, NA, NA, NA, NA, NA), shipment_hk = c(NA, 
NA, NA, NA, NA, NA, NA, "send to hk", NA, NA, NA, "send to hk", 
NA, NA, NA, NA, "send to hk", NA, NA, NA, NA, NA, NA, NA, NA, 
NA), Monthly = c(NA, "Monthly", "Monthly", NA, "Monthly", "Monthly", 
NA, NA, NA, NA, NA, NA, "Monthly", NA, "Monthly", NA, NA, NA, 
NA, NA, NA, "Monthly", NA, NA, NA, NA), Quarterly = c(NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "Quarterly", 
NA, "Quarterly", NA, NA, NA, "Quarterly", NA, NA), Yearly = c(NA, 
NA, NA, NA, NA, NA, NA, NA, "Yearly", "Yearly", NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA, 
-26L))

중첩 대신 사용 coalesce및 사용 case_when하는 한 가지 방법 ifelse:

library(dplyr)

sample_df %>%
  group_by(country, id) %>%
  mutate(periods = coalesce(Monthly, Quarterly, Yearly),
         shipment = case_when(
           any(shipment_hk == "send to hk") ~ "send to hk",
           any(shipment_china == "send to china") ~ "send to china",
           TRUE ~ NA_character_
         ))

이 우선 순위 것 shipment_hk이상 shipment_china새에 shipment열입니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

여러 행에서 두 열 사이의 값 선택

분류에서Dev

SQL에서 xml의 여러 태그 값 선택

분류에서Dev

여러 선택 jquery 플러그인에 여러 값 추가 (선택됨)

분류에서Dev

다른 열로 그룹화 한 후 그룹에서 한 열의 값 선택

분류에서Dev

여러 테이블에서 여러 값의 개수 선택

분류에서Dev

조건부 집계로 그룹화에서 여러 n 번째 값 선택-Pandas

분류에서Dev

여러 줄 문자열에서 정규식 그룹의 IP 주소 선택

분류에서Dev

여러 값에서 상위 값 선택

분류에서Dev

다른 테이블에서 선택한 한 열의 여러 값 결합

분류에서Dev

SQL 조건이 다른 하나의 열에서 여러 값 선택

분류에서Dev

한 열 값을 Python의 여러 열에서 무작위로 선택한 다른 열 값으로 채 웁니다.

분류에서Dev

열 값에 따라 여러 행 선택

분류에서Dev

CloudFormation 템플릿의 DropDownList에서 여러 값 선택

분류에서Dev

여러 테이블에서 ID의 최대 값 선택

분류에서Dev

드롭 다운의 변경 기능에서 여러 값 선택

분류에서Dev

SQL Server 2014에서 여러 괄호 사이의 값 선택

분류에서Dev

Pandas를 사용하여 조건에 따라 열의 문자열 값을 그룹화하고 선택합니다.

분류에서Dev

dplyr의 두 열에있는 값에 따라 그룹 선택

분류에서Dev

그룹 쿼리의 열에서 하나의 값을 선택하는 방법

분류에서Dev

MySql : 한 열의 값을 결과의 여러 열로 선택

분류에서Dev

SQL 두 열을 그룹화하여 최대 값 선택

분류에서Dev

주어진 조건부에서 여러 열에서 값 선택

분류에서Dev

여러 열의 값을 단일 열로 선택

분류에서Dev

특정 열 postgres에서 가장 큰 값을 가진 그룹의 행 선택

분류에서Dev

다차원 배열의 합계 값 (여러 행이있는 여러 열 선택)

분류에서Dev

Postgres의 그룹화 된 행에서 값 선택

분류에서Dev

셀레늄의 그룹에서 첫 번째 범위 값 선택

분류에서Dev

MySQL-열의 문자 사이에 여러 값을 별도의 열로 선택

분류에서Dev

목록 내의 여러 데이터 프레임에서 선택한 열 이름에 열 값 접두사 추가

Related 관련 기사

  1. 1

    여러 행에서 두 열 사이의 값 선택

  2. 2

    SQL에서 xml의 여러 태그 값 선택

  3. 3

    여러 선택 jquery 플러그인에 여러 값 추가 (선택됨)

  4. 4

    다른 열로 그룹화 한 후 그룹에서 한 열의 값 선택

  5. 5

    여러 테이블에서 여러 값의 개수 선택

  6. 6

    조건부 집계로 그룹화에서 여러 n 번째 값 선택-Pandas

  7. 7

    여러 줄 문자열에서 정규식 그룹의 IP 주소 선택

  8. 8

    여러 값에서 상위 값 선택

  9. 9

    다른 테이블에서 선택한 한 열의 여러 값 결합

  10. 10

    SQL 조건이 다른 하나의 열에서 여러 값 선택

  11. 11

    한 열 값을 Python의 여러 열에서 무작위로 선택한 다른 열 값으로 채 웁니다.

  12. 12

    열 값에 따라 여러 행 선택

  13. 13

    CloudFormation 템플릿의 DropDownList에서 여러 값 선택

  14. 14

    여러 테이블에서 ID의 최대 값 선택

  15. 15

    드롭 다운의 변경 기능에서 여러 값 선택

  16. 16

    SQL Server 2014에서 여러 괄호 사이의 값 선택

  17. 17

    Pandas를 사용하여 조건에 따라 열의 문자열 값을 그룹화하고 선택합니다.

  18. 18

    dplyr의 두 열에있는 값에 따라 그룹 선택

  19. 19

    그룹 쿼리의 열에서 하나의 값을 선택하는 방법

  20. 20

    MySql : 한 열의 값을 결과의 여러 열로 선택

  21. 21

    SQL 두 열을 그룹화하여 최대 값 선택

  22. 22

    주어진 조건부에서 여러 열에서 값 선택

  23. 23

    여러 열의 값을 단일 열로 선택

  24. 24

    특정 열 postgres에서 가장 큰 값을 가진 그룹의 행 선택

  25. 25

    다차원 배열의 합계 값 (여러 행이있는 여러 열 선택)

  26. 26

    Postgres의 그룹화 된 행에서 값 선택

  27. 27

    셀레늄의 그룹에서 첫 번째 범위 값 선택

  28. 28

    MySQL-열의 문자 사이에 여러 값을 별도의 열로 선택

  29. 29

    목록 내의 여러 데이터 프레임에서 선택한 열 이름에 열 값 접두사 추가

뜨겁다태그

보관