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 |