2017-09-19 3 views
0

이 질문에 대한 답을 찾으려고 시도했지만 할 수 없었습니다. 열의 하위 문자열을 기준으로 데이터 프레임 정렬

DF <- data.frame (x=c("2,A","1,A","1,C", "1,B"), y = c(1,2,2,1)) 

숫자와 문자가 처음있는 두 개의 열이있는 Dataframe를 산출, 나는 dataframe을 말해봐. 각 행의 번호 부분에 따라 DF를 정렬하려면 어떻게해야합니까? 그런 다음 문자로만 다른 열을 추가하십시오. 목적은

x y z 
1 1,A 2 A 
2 2,A 1 A 
3 1,B 1 B 
4 1,C 2 C 

건배

답변

2

사용 gsub 그 기반으로 DF 정렬 order를 사용해서 순차적으로 모든 숫자 또는 쉼표 ("(\\d+|,)") 및 모든 비 - 숫자 ("\\D+")를 교체하고, 수득한다.

DF = DF[order(as.character(gsub("(\\d+|,)", "", DF$x)), as.numeric(gsub("\\D+", "", DF$x))),] 
DF$z = gsub("(\\d+|,)", "", DF$x) 
DF 
# x y z 
#2 1,A 2 A 
#1 2,A 1 A 
#4 1,B 1 B 
#3 1,C 2 C 
+1

환상적입니다. 대답과 숫자 및 문자열 처리에 대한 일반적인 팁 주셔서 감사합니다! :) – Arrebimbomalho

관련 문제