2009-12-24 3 views
0

에 의해 나는이처럼 data.frame 있습니다내부 종류 - 일단 숫자에 의해 다음 알파

nums<-c(5,7,8,9,10,3,2,1) 
text<-c("a","b","c","d","a 09","b 09","c 09","d 09") 
this <- data.frame() 
this <- cbind(text,nums) 

"a" 5 
"b" 7 
"c" 8 
"d" 9 
"a 09" 10 
"b 09" 3 
"c 09" 2 
"d 09" 1 

A : 2010 D = 데이터하는 09 : D : 2009 년 09 = 데이터입니다. 먼저 숫자 열에서 가장 큰 것부터 가장 작은 것부터 순서대로 정렬 한 다음 문자열 열로 정렬하고 싶습니다. 유일한 캐치는 문자열 컬럼은 다음과 같이, 2010 년 데이터 아래 09 '의 데이터를 표시하는 것입니다 :

"d" 9 
"d 09" 1 
"c" 8 
"c 09" 2 
"b" 7 
"b 09" 3 
"a" 5 
"a 09" 10 
+0

확실하지가 요한 무슨 뜻인지. 하지만 몇 년 후 편집을 환영합니다. –

답변

2

Deducer 패키지는 data.frames을위한 좋은 정렬 기능을 가지고 :

> library(Deducer) 
> text<-c("a","b","c","d","a 09","b 09","c 09","d 09") 
> nums<-c(5,7,8,9,10,3,2,1) 
> t1<-sapply(text,function(x) strsplit(x," ")[[1]][1]) 
> t2<-sapply(text,function(x) strsplit(x," ")[[1]][2]) 
> dat<-data.frame(text,nums,t1,t2) 
> sort(dat,by=~-t1 -t2) 
    text nums t1 t2 
d  d 9 d <NA> 
d 09 d 09 1 d 09 
c  c 8 c <NA> 
c 09 c 09 2 c 09 
b  b 7 b <NA> 
b 09 b 09 3 b 09 
a  a 5 a <NA> 
a 09 a 09 10 a 09 
+0

감사합니다. Ian, 이제 텍스트 열에 공간이 아닌 "09"가 있다는 사실을 기반으로해야한다면 어떻게할까요? (예를 단순화했지만 실제로는 a, b, c, d는 회사입니다. 공백 및 다른 문자가있는 이름). –

+1

grep ("09", text)은 올바른 방향으로 사용자를 지시해야합니다. –

+0

이 문제를 해결하는 데 어려움이 있습니다. grep ("09", text)은 벡터 만 반환합니다. 예제를 제공해 줄 수 있습니까? –

1

한 가지 제안 :

교체 후 첫 번째 열에서 순서를()를 실행 시도하고 홀수 및 짝수 인덱스에 별도로 인덱스를 생성하고 각각을 새로운 벡터에 할당하여 2 행마다