Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- vector 비교
- Data Structure
- :
- 데이터 입출력
- 스크래핑
- c()
- ROTTEN TOMATOES
- 함수
- R 개요
- 문자열처리
- length
- R 기초
- seq
- factor
- CSV
- stringr
- 연습문제
- 네이버 영화 댓글
- 데이터 타입의 우선순위
- 정규표현식
- Crawling
- REP
- scraping
- vector 연산
- data frame
- working directory
- 데이터 타입
- 변수 선언
- TXT
- Names
Archives
- Today
- Total
study blog
String - stringr 패키지를 이용한 문자열 처리 본문
문자열 처리 (string)
# stringr 이라는 package를 이용하면 문자열 처리 쉽고 편하게 할 수 있음
# stringr 설치하기
install.packages("stringr")
library(stringr)
# stringr 패키지를 이용한 문자열 처리
var1 = "Honggd1234Leess9032YOU25최길동2009"
① str_length(): 문자열의 길이 구하기
str_length(var1) # 출력결과: 31
② str_locate(): 찾는 문자열의 시작과 끝을 알려줌
str_locate(var1,"9032") # start:16 end:19
str_locate(var1,c("9032","Y"))
③ str_sub(): 부분문자열 (문자를 끊어와줌)
str_sub(var1,3,8) #시작 index와 끝 index주면 됨 ( 둘 다 inclusive )
④ str_to_lower(), str_to_upper(): 대소문자 변경
str_to_lower("SjfdkS") #모두 소문자로 변경
str_to_upper(var1) #모두 대문자로 변경
⑤ str_replace(), str_replace_all(): 문자열 교체
str_replace(var1,"Hong","KIM") #Hong을 찾아서 KIM으로 바꿔줌
var11 = "Honggd1234Hongss9032YOU25최길동2009"
str_replace(var11,"Hong","KIM") # 첫 Hong만 바꿈
str_replace_all(var11,"Hong","KIM") #모든 Hong 다 바꿈
⑥ str_c(): 문자열 결합
var2 = "홍"
var3 = "길동"
str_c(var2,var3)
⑦ str_split(): 문자열 분할
var1 = "Honggd1234,Leess9032,YOU25,최길동2009"
str_split(var1,",") # , 를 기준으로 문자열 분할
# 출력결과: list형태
[[1]]
[1] "Honggd1234" "Leess9032" "YOU25" "최길동2009"
⑧ paste(): vector 문자열 결합
var1 = c("홍길동","김길동","최길동")
str_c(var1) #안됨!
paste(var1,collapse = "-") # -로 구분해서 붙여줌
⑨ str_extract(), str_extract_all() : 조건에 부합되는 것 가져와라
var1 = "Honggd1234,Leess9032,YOU25,최길동2034"
str_extract_all(var1,"34") # “34” “34” # 찾은 값들을 return
⑩ string_detect() : 포함하는 문자열 찾아라
str_detect(trans,"auto") # auto를 포함하는 단어를 trans에서 찾아라
# 정규표현식
[문자]{개수} 형태
소문자 a부터 z까지
대괄호는 문자 1개 지칭
중괄호의 의미: 개수
var1 = "Honggd1234,Leess9032,YOU25,최길동2009"
str_extract_all(var1,"[a-z]{4}") #""내의 내용은 정규표현식 # 출력값: "ongg" "eess"
# 영문자 소문자로 연달아 4개 나오는 것
str_extract_all(var1,"[A-Z]{2}") # "YO"
str_extract_all(var1,"[A-Z]{2,}") # , 를 붙이면 2개 이상을 의미. # “YOU”
str_extract_all(var1,"[a-z]{4,}") # “onggd” “eess”
str_extract_all(var1,"[a-z]{2,3}") # 2개에서 3개 사이 # “ong” “gd” “ees”
ex) 한글만 추출해 보자
str_extract_all(var1,"[가-힣]") #”최” “길” “동”
str_extract_all(var1,"[가-힣]{2,}") # “최길동”
ex) 숫자를 추출해 보자
str_extract_all(var1,"[0-9]{2,}") # “1234” “9032” “25” “2034”
ex) 한글을 제외한 나머지 문자들 추출
str_extract_all(var1,"[^가-힣]{5}") # !가 아니고 ^가 not의 의미
# 한글 아닌 것이 5개 연속으로 있는 것 찾기
ex) 주민등록번호를 검사해 보자
myId = "801112-1210419"
str_extract_all(myId,"[0-9]{6}-[1-4][0-9]{6}") #[1-4] = [1234]
# 출력결과: “801112-1210419”
myId2 = "801112-6210419"
str_extract_all(myId2,"[0-9]{6}-[1-4][0-9]{6}") #character(0)
[string 연습문제]
[연습문제]
입력으로 최대 100자의 문자열을 이용
입력으로 사용된 문자열에서 숫자만을 추출해서 출력하기
ex) Hi2567Hello23kaka890L34TT23 ->2567238903423
이렇게 추출한 문자열에서 개수가 가장 많은 숫자를 찾아서 숫자와 출현빈도를 추출
만약 출현빈도가 같은 숫자가 여러 개인 경우 그 중 가장 작은 숫자와 출현빈도를 출력하기 (2→3, 3→1)
myFun = function(s){
y <- str_extract_all(s,"[0-9]")
a <- as.matrix(table(y))
b <- min(row.names(subset(a,a==max(a))))
cat("개수많은숫자:",b,"빈도수:",max(a))
}
myFun("kdflriejl128520583290742609")
'R > 1. R 기초' 카테고리의 다른 글
제어문 - 조건문(if, ifelse) & 반복문(for, while) / 사용자 정의 함수 (0) | 2020.01.10 |
---|---|
데이터 입출력 - txt, csv, xml, json, excel (0) | 2020.01.09 |
Data Structure 2 - list, data frame, factor (0) | 2020.01.08 |
Data Structure 1 - vector, matrix, array (0) | 2020.01.07 |
Package (0) | 2020.01.06 |
Comments