【发布时间】:2017-10-21 01:53:14
【问题描述】:
> str(b)
'data.frame': 2720 obs. of 3 variables:
$ State : chr "AL" "AL" "AL" "AL" ...
$ Hospital.Name: chr "SOUTHEAST ALABAMA MEDICAL CENTER" "MARSHALL MEDICAL
CENTER SOUTH" "ELIZA COFFEE MEMORIAL HOSPITAL" "ST VINCENT'S EAST" ...
$ heart attack : num 14.3 18.5 18.1 17.7 18 15.9 19.6 17.3 17.8 17.5 ...
上面是我的数据框。我想按州对其进行分组,并在每个组中按心脏病发作进行排名,所以我的代码如下:
c <- group_by(b,State) %>%
mutate(rank = order(order('heart attack')))
但我得到的结果是 rank 列中的所有值都等于 1:
> c
# A tibble: 2,720 x 4
# Groups: State [54]
State Hospital.Name `heart attack` rank
<chr> <chr> <dbl> <int>
1 AL SOUTHEAST ALABAMA MEDICAL CENTER 14.3 1
2 AL MARSHALL MEDICAL CENTER SOUTH 18.5 1
3 AL ELIZA COFFEE MEMORIAL HOSPITAL 18.1 1
4 AL ST VINCENT'S EAST 17.7 1
5 AL DEKALB REGIONAL MEDICAL CENTER 18.0 1
6 AL SHELBY BAPTIST MEDICAL CENTER 15.9 1
7 AL HELEN KELLER MEMORIAL HOSPITAL 19.6 1
8 AL DALE MEDICAL CENTER 17.3 1
9 AL BAPTIST MEDICAL CENTER SOUTH 17.8 1
10 AL JACKSON HOSPITAL & CLINIC INC 17.5 1
# ... with 2,710 more rows
谁能帮我弄清楚为什么它不起作用?
【问题讨论】:
-
单独运行
order(order('heart attack')),你会看到它总是返回1(因为你传递给它一个长度为1的字符向量)。我假设您打算使用反引号 (`) 而不是单引号 (')。 -
^ 换句话说,R 没有将“心脏病发作”识别为列名。它认为您正试图告诉它对 heart attack 词进行排名。将名为`heart attack`的列放入并取出额外的
order(),它应该可以正常工作。