>

연속 변수를 간격으로 묶으려고 노력하고 있는데, 관측 값 그룹에 따라 컷 값이 달라집니다. 이전에 비슷한 질문을했지만 단 하나의 열만 처리했지만 그가 group_by() 와 함께 작동하도록 일반화 할 수있는 솔루션을 찾고 싶었습니다.   dplyr 의 기능 그룹화를 위해 여러 열을 선택할 수 있습니다.

다음은 기본 데이터 예입니다 :

df <- data.frame(group = c(rep("Group 1", 10),
                           rep("Group 2", 10)),
                 subgroup = c(1,2),
                 value = 1:20)

만들기 :

    group subgroup value
1  Group 1        1     1
2  Group 1        2     2
3  Group 1        1     3
4  Group 1        2     4
5  Group 1        1     5
6  Group 1        2     6
7  Group 1        1     7
8  Group 1        2     8
9  Group 1        1     9
10 Group 1        2    10
11 Group 2        1    11
12 Group 2        2    12
13 Group 2        1    13
14 Group 2        2    14
15 Group 2        1    15
16 Group 2        2    16
17 Group 2        1    17
18 Group 2        2    18
19 Group 2        1    19
20 Group 2        2    20

이 질문의 목적 상, 그룹들을 1 의 값으로 나누고 싶다고 가정하자  또는 2 값이 그룹의 평균값보다 높은지 또는 낮은 지에 따라 다릅니다. 그룹화는 group 가 수행해야합니다.  그리고 subgroup 예상 출력 :

    group subgroup value cut
1  Group 1        1     1   1
2  Group 1        2     2   1
3  Group 1        1     3   1
4  Group 1        2     4   1
5  Group 1        1     5   1
6  Group 1        2     6   2
7  Group 1        1     7   2
8  Group 1        2     8   2
9  Group 1        1     9   2
10 Group 1        2    10   2
11 Group 2        1    11   1
12 Group 2        2    12   1
13 Group 2        1    13   1
14 Group 2        2    14   1
15 Group 2        1    15   1
16 Group 2        2    16   2
17 Group 2        1    17   2
18 Group 2        2    18   2
19 Group 2        1    19   2
20 Group 2        2    20   2

다음 라인을 따라 출력을 기대하고있었습니다 :

df %>%
  group_by(group, subgroup) %>%
  # INSERT MAGIC FUNCTION TO BIN DATA

  • 답변 # 1

    cut 를 사용하려면 , 당신은 이렇게 할 수 있습니다 :

    df %>% 
      group_by(group, subgroup) %>% 
      mutate(bin = cut(value, breaks = c(-Inf, mean(value), Inf), labels = c(1,2)))
    
    

  • 답변 # 2

    이 경우 반드시 cut 가 필요하지 않습니다 . 사용 :

    df %>%
      group_by(group, subgroup) %>%
      mutate(cut_grp = (value > mean(value)) + 1)
    
    

    제공 :

    와이즈 비즈 와이즈 비즈

  • 이전 PHP는 배열 안에 배열을 추가
  • 다음 파이썬 여러 줄 문자열에서 변수 무시