【发布时间】:2015-04-27 06:38:57
【问题描述】:
我想按字母顺序对c 排序if x[i]== x[i+1]。我使用了order() 函数,但它也更改了x 列。我想订购整行:
best <- function(state){
HospitalName<-vector()
StateName<-vector()
HeartAttack<-vector()
k<-1
outcome<-read.csv("outcome-of-care-measures.csv",colClasses= "character")
temp<-(outcome[,c(2,7,11,17,23)])
for (i in 1:nrow(temp)){
if(identical(state,temp[i,2])==TRUE){
HospitalName[k]<-temp[i,1]
StateName[k]<-temp[i,2]
HeartAttack[k]<-as.numeric(temp[i,4])
k<-k+1
}}
frame<-data.frame(cbind(HospitalName,StateName,HeartAttack))
library(dplyr)
frame %>%
group_by(as.numeric(as.character(frame[,3]))) %>%
arrange(frame[,1])
}
Output:
HospitalName StateName HeartAttack
1 FORT DUNCAN MEDICAL CENTER TX 8.1
2 TOMBALL REGIONAL MEDICAL CENTER TX 8.5
3 CYPRESS FAIRBANKS MEDICAL CENTER TX 8.7
4 DETAR HOSPITAL NAVARRO TX 8.7
5 METHODIST HOSPITAL,THE TX 8.8
6 MISSION REGIONAL MEDICAL CENTER TX 8.8
7 BAYLOR ALL SAINTS MEDICAL CENTER AT FW TX 8.9
8 SCOTT & WHITE HOSPITAL-ROUND ROCK TX 8.9
9 THE HEART HOSPITAL BAYLOR PLANO TX 9
10 UT SOUTHWESTERN UNIVERSITY HOSPITAL TX 9
.. ... ... ...
Variables not shown: as.numeric(as.character(frame[, 3])) (dbl)
输出不包含 HeartAttack 列,我不明白为什么?
【问题讨论】:
-
简单地可以做如下 x[order(x$c), , drop = FALSE] x 是你的数据的名字,c 是你想要排名的列等等
-
@Nemo 这只会订购 c 列。这不是 OP 想要的。
-
@LyzanderR 我明白了,但是,这似乎是一个重复的问题:-)
-
这不是一个重复的问题。仅当列 x 具有顺序相同的编号时,OP 才希望对列 c 进行排序。我投票决定重新打开它。
-
@LyzandeR OP 希望先按“x”排序数据,然后按“c”排序。在我发布的链接中,数据也按两个变量排序(按“z”(降序)和“b”)。我看不到这里的根本区别。在不同的答案中,还有一个
dplyr替代方案。
标签: r sorting char alphabetical