R创建因子等级的新列

时间:2014-05-21 12:38:02

标签: r

在R中我有一个包含两列的数据帧,一列是值,另一列是每个值分配给的组:

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 by group的平均值对组进行排名并在每行中输入该排名:

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 个答案:

答案 0 :(得分: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