R의 문자열 처리 및 비교
문자열 길이 알아내기
nchar문자열 연결 하기
paste("Everybody", "loves", "you.")비칸을 이용해서 합쳐지며, 다른 문자를 쓰고 싶으면 seq="" 옵션을 이용 한다.
하위 문자열 추출 하기
substr(string,start,end)string에서 strat에서 시작하고 end에서 끝나는 문자열을 추출 한다.
구분자료 문차열 추출
strsplit(문자열, 구분자)
반환값은 리스트이고
각각의 리스트 원소들은 백터이다.
이렇게 두개의 수준으로 된 구조가 필요한 이유는
첫 인자가 문자열로 된 백터일 수 있기 때문이다.
각 문자열은 자신의 하위 문자열들(백터)로 분할 된다.
그리고 나서 이 벡터들이 리스트로 반환되는 것이다.
> path <- "/home/mike/data/trials.csv"
> strsplit(path,"/")
[[1]]
[1] "" "home" "mike" "data" "trials.csv"
> paths <- c("/home/mike/data/trials.csv","/home/mike/data/data.csv","/home/mike/data/error.csv")
> path <- "/home/mike/data/trials.csv"
> strsplit(paths,"/")
[[1]]
[1] "" "home" "mike" "data" "trials.csv"
[[2]]
[1] "" "home" "mike" "data" "data.csv"
[[3]]
[1] "" "home" "mike" "data" "error.csv"하위 문자열 대체하기
sub(old,new,string)
첫 번째 하위 문자열을 대체한다.
gsub(old,new,string)
모든 하위 문자열을 대체한다.
정규 표현식을 없앨려면 fixed = TRUE 옵션을 사용 한다.
문자열 특수문자 보기
cat
문자열의 모든 쌍별 조합 생성
m <- outer(문자열1, 문자열2, paste, seq="")문자열 비교하는 함수
가능한 함수는 아래와 같고grep, grepl, regexpr, gregexpr, regexec
grep을 이용해서
어떤 패턴의 문자열을
원하는 문자로 변경하는 방법은 아래와 같다.
#아래와 같은 샘플이 있다고 가정하자.
Sample <- c("BU1", "BU2", "BM1", "BD1", "BU3")
#grep을 수행 할 경우
> grep("^BU", Sample)
c(1,2,5)
> section <- character(length(Sample))
> section[grepl("^BU", Sample)] <- "up"
> section[grepl("^BM", Sample)] <- "mid"
> section[grepl("^BD", Sample)] <- "down"
> section
[1] "up" "up" "mid" "down" "up"
# mapping 방식을 이용한 것도 있다.
# 방법 1
map <- c(BU="up", BM="mid", BD="down")
section <- unname(map[substring(Sample, 1, 2)])
section
[1] "up" "up" "mid" "down" "up"
# 방법 2
from <- c("BU", "BM", "BD")
to <- c("up", "mid", "down")
section <- to[match(substring(Sample,1,2), from)]
section
[1] "up" "up" "mid" "down" "up" IF 와 grep을 혼용해서 사용하는 방법
if(length(grep(x,y))==0)any(grep(x,y))반복문을 돌면서 두개의 문자열이 같은지 비교하는 코드
pmatch를 이용한다.
sapply(1:length(singleplace$V1), function(x){
#pmatch(singleplace$V1[x],multieplace$V1[x])
pmatch(singleplace$V2[x],multieplace$V2[x])
}
)기타 Match함수로는 아래의 것들이 있다.
> as.logical(match(x,1,nomatch=FALSE))
[1] FALSE
> 1:10 %in% c(1,3,5,9)
[1] TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE TRUE FALSE'AI > R Basic' 카테고리의 다른 글
| 자료형(integer,character) 변환 및 데이터 구조(dataFrame, list) 변환 (3) | 2015.10.04 |
|---|---|
| Apply 함수 (데이터 조작) (1) | 2015.10.03 |
| Plyr package (데이터 조작) (0) | 2015.10.01 |
| Reshape2 pacakge (데이터 조작) (0) | 2015.10.01 |
| R 자주 사용하는 팁 및 한글 주석 깨짐 해결 (2) | 2015.07.30 |