# 특정 문자 포함하는 data 찾기
✔︎ grep("a", xyz, value=TRUE)
: a라는 문자를 포함하는 data 찾기 (대소문자 구분 필요)
* value=TRUE로 해야 data 값이 나옴
value를 지정안하면(=FALSE) 해당 data 위치가 나옴
cars <- rownames(mtcars)
# 어떤 문자를 포함하는 data 찾기 (대소문자 구분)
> grep("v", cars, value=TRUE)
[1] "Hornet 4 Drive" "Honda Civic" "AMC Javelin" "Volvo 142E"
> grep("V", cars, value=TRUE)
[1] "Valiant" "Volvo 142E"
> grep("v", cars)
[1] 4 19 23 32
# 대소문자 구분 없이 해당 문자 포함하는 data 찾기
> grep("[vV]", cars, value=TRUE)
[1] "Hornet 4 Drive" "Valiant" "Honda Civic" "AMC Javelin" "Volvo 142E"
> grep("v", tolower(cars), value=TRUE)
[1] "hornet 4 drive" "valiant" "honda civic" "amc javelin" "volvo 142e"
> grep("MERC", toupper(cars), value=TRUE)
[1] "MERC 240D" "MERC 230" "MERC 280" "MERC 280C" "MERC 450SE" "MERC 450SL"
[7] "MERC 450SLC"
문자 데이터 정리를 위한 패키지(stringr) 설치
✔︎ install.packages("stringr")
# 특정 data의 개수 찾기
✔︎ sum(str_count(xyz, "a"))
cars <- rownames(mtcars)
library(stringr)
# FIAT의 개수 찾기
> str_count(toupper(cars),"FIAT")
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
> sum(str_count(toupper(cars),"FIAT"))
[1] 2
# 단어 분리하고 합치기
✔︎ strsplit(xyz, split="a")
: a 기준으로 단어 분리
✔︎ paste(xyz, collapse="a")
: a 기준으로 단어 붙이기
# 단어 분리하기 (띄어쓰기로 구분)
strsplit("abc def xyz", split =" ")
[[1]]
[1] "abc" "def" "xyz"
# 철자 분리하기 (철자 하나하나 구분)
a <- strsplit("abc def xyz", split ="")
> a
[[1]]
[1] "a" "b" "c" " " "d" "e" "f" " " "x" "y" "z"
> class(a)
[1] "list"
# 분리한 단어 붙이기 -> 실패
paste(a[[1]])
[1] "a" "b" "c" " " "d" "e" "f" " " "x" "y" "z"
# 분리한 단어 제대로 붙이기 (철자 하나하나씩)
paste(a[[1]],collapse="")
[1] "abc def xyz"
# Reverse Letters & 일반 함수화
✔︎ function(xyz){~~}
: abc에 입력한 값을 ~~로 바꿔라
a <- strsplit("abc def xyz", split ="")
# 거꾸로 글자 나열 (글자 수를 알아야 11번째 글자부터 나열하라고 지정 가능)
reversed <- a[[1]][11:1]
> reversed
[1] "z" "y" "x" " " "f" "e" "d" " " "c" "b" "a"
paste(reversed,collapse="")
[1] "zyx fed cba"
# 거꾸로 글자 나열하는 것을 일반 함수화
reverse_mine <- function(abc){
b <- strsplit(abc, split="")
reversed <- b[[1]][nchar(abc):1]
paste(reversed, collapse="")
}
reverse_mine("abc def xyz")
[1] "zyx fed cba"
# Reverse Words & 일반 함수화
# 단어를 거꾸로
a <- strsplit("abc def xyz", split =" ")
reversed <- a[[1]][3:1]
paste(reversed,collapse=" ")
[1] "xyz def abc"
# 단어를 거꾸로 (일반 함수화)
rev_word <- function(abc){
b <- strsplit(abc, split =" ")
abc_length <- length(b[[1]])
reversed <- b[[1]][abc_length:1]
paste(reversed,collapse=" ")
}
rev_word("abc def xyz")
[1] "xyz def abc"