2016-06-16 9 views
2

I 데이터이검색 및 기능을 대체는

> d <- data.frame(team.aaa=1:3, team.aab=4:6, team.aac=7:9) 
> d 

# team.aaa team.aab team.aac 
#1  1  4  7 
#2  2  5  8 

같은 프레임과,

d <- rename(d, c("team.aaa"="aaa_team", "team.aab"="aab_team", "team.aac"="aac_team")) 
> d 
# aaa_team aab_team aac_team 
#1  1  4  7 
#2  2  5  8 
#3  3  6  9 

내가 이름 바꾸기 문자열로 그것을 할 수 원하는 출력을 가지고 있지만, 검색을 사용하고 옵션을 대체 할 열 이름을 바꾸려면 거대한 데이터 볼륨 때문에 미리 감사드립니다.

답변

2

예를 들어 OP 게시물에 표시된 바에 따르면 . 다음의 접미어 부분은 th 일 것입니다. e 접두사 및 viceversa. 이 경우 sub을 사용하여 .이 아닌 문자를 캡처 한 다음 나머지 문자 ((.*))를 캡처하고 이에 따라 배열 된 역 참조로 바꿀 수 있습니다.

names(d) <- sub("([^.]+).(.*)", "\\2_\\1", names(d)) 
names(d) 
#[1] "aaa_team" "aab_team" "aac_team" 

또는 또 다른 옵션은 '팀이'항상 경우, 순서

sapply(strsplit(names(d), "[.]"), function(x) paste(rev(x), collapse="_")) 

또는 코멘트에 언급 @jota 등을 반전 한 후 다음 paste.하여 문자열을 분할하는 것 첫 단어로 더 컴팩트하게 만들 수 있습니다. sub

sub("team\\.(.*)", "\\1_team", names(d)) 
+0

감사합니다. 매우 많이 – Jay

+1

"팀"이 항상 첫 번째 단어 인 경우 :'gsub ("팀 \\. (. *)", "\\ 1_team", names (d), perl = TRUE)' – Jota

+0

@ jota 당신은 "팀"은 항상 첫 단어가 아니라고 말했고, 나는 "build_MS2_aab"와 같은 이름을 가진 칼럼을 가지고있다. 원하는 출력은 "aab_build_MS2"가 될 것이다. 미리 감사드립니다. – Jay