2014-05-21 4 views
-2

의 계급의 새 열을 만드는 두 개의 열 하나에 dataframe이 값이 있고 다른 하나는 각 값에 할당 된 그룹입니다 :R은 RI 요인

my_group my_value 
A 1.2 
B 5.4 
C 9.2 
A 1.1 
B 5.2 
C 9.8 
A 1.3 
B 5.1 
C 9.2 
A 1.0 
B 5.7 
C 9.1 

내가 세 번째를 만들려면 그룹 순위 그룹에 의해 my_value의 평균을 사용하고 각 행이 순위에 진입 열 :

my_group my_value my_group_rank 
A 1.2 3 
B 5.4 2 
C 9.2 1 
A 1.1 3 
B 5.2 2 
C 9.8 1 
A 1.3 3 
B 5.1 2 
C 9.2 1 
A 1.0 3 
B 5.7 2 
C 9.1 1 

답변

1

다음 코드는 그룹 순위가 반대 순서에있을 것입니다 것을 제외하고, 데이터에 순위를 추가 할 것입니다, 아마도 당신은 여전히 ​​그것을 사용할 수 있습니다. 나는 이것을 위해 dplyr 패키지를 사용한다. 위의 예에서는 데이터가 test이라는 data.frame에 있다고 가정합니다.

require(dplyr) 

test <- test %>% 
    group_by(my_group) %>% 
    mutate(avg = mean(my_value)) %>% 
    ungroup() %>% 
    mutate(my_group_rank = dense_rank(avg)) %>% 
    select(-avg) 


# my_group my_value my_group_rank 
#1   A  1.2    1 
#2   B  5.4    2 
#3   C  10.2    3 
#4   A  1.1    1 
#5   B  5.2    2 
#6   C  9.8    3 
#7   A  1.3    1 
#8   B  5.1    2 
#9   C  9.2    3 
#10  A  1.0    1 
#11  B  5.7    2 
#12  C  10.1    3