데이터분석 전문가(ADP)를 위한 R 프로그래밍 기초편6

1. 문자열 다루기

 

nchar(var)

 

단어나 문장 또는 벡터내 원소의 문자열 길이를 반환

 

벡터를 넣을경우 문자열의 길이가 아니라 벡터내 원소들의 문자열 길이를 벡터로 반환

 

> nchar('abcdefg')
[1] 7

> nchar(c(1,2,3,4,5,6))
[1] 1 1 1 1 1 1

> nchar(c('ab',1,2,3,'abcdef'))
[1] 2 1 1 1 6

 

paste(단어1, 단어2, sep=, collapse=)

 

주어진 문자열들을 sep를 연결해서 출력함

 

collapse는 벡터들을 연결해서 연결되는 결과가 여러개가 나오는경우

 

collapse에서 지정한 문자로 이들을 연결시켜서 하나로 만든다

 

> paste('taeyeon','love',sep='-')
[1] "taeyeon-love"

> paste(c('yun','kim','park'),'loves taeyeon',collapse=', and ')
[1] "yun loves taeyeon, and kim loves taeyeon, and park loves taeyeon"

> paste('the pi is approximately',pi)
[1] "the pi is approximately 3.14159265358979"

 

substr(문자열, a,b)

 

주어진 문자열의 a번째부터 b번째까지를 부분추출함

 

> substr('deeplearning',2,4)
[1] "eep"

> substr('statistics',1,5)
[1] "stati"

> substr('i love you', 3,7)
[1] "love "

 

strsplit(문자열, 구분자)

 

주어진 문자열을 지정한 구분자 단위의 token으로 나눠준다

 

리스트로 반환하며 unlist를 사용하여 벡터로 얻을 수 있다

 

> string1 <- 'i love taeyeon'

> strsplit(string1, ' ')

[[1]]
[1] "i"       "love"    "taeyeon"

> string2 <- c('2015:statistics','2014:math','2013:english')

> strsplit(string2, ':')

[[1]]
[1] "2015"       "statistics"

[[2]]
[1] "2014" "math"

[[3]]
[1] "2013"    "english"

 

sub(old,new,string)

gsub(old,new,string)

 

주어진 string에서 old에 해당하는 부분을 new로 대체하는 함수

 

sub()는 가장 먼저 나오는 old부분 한번만 바꾸고

 

gsub()는 모든 old부분을 바꿔준다

 

> string <- 'taeyeon likes me, taeyeon loves me'

> sub('taeyeon','suzy',string)
[1] "suzy likes me, taeyeon loves me"

> gsub('taeyeon','suzy',string)
[1] "suzy likes me, suzy loves me"

 

outer(문자열벡터 1, 문자열벡터 2, paste, sep=)으로 문자열1과 문자열2를 paste한 outer product를 만들 수 있다

 

> mat <- outer(c('i love','i like'), c('taeyeon','suzy','sekyung'), paste, sep=' ')

> mat

     [,1]             [,2]          [,3]            
[1,] "i love taeyeon" "i love suzy" "i love sekyung"
[2,] "i like taeyeon" "i like suzy" "i like sekyung"

 

grep(문자, 데이터,...)는 주어진 데이터에 문자가 존재하는지 검색하여 index를 반환함

 

ex<-c("apple", "orange", "banana", "Apple", "pineapple")

grep("apple", ex)
[1] 1 5

 

pineapple은 apple은 아니지만 apple을 포함해서 index를 반환해주나봄

 

 

2. 날짜 다루기

 

 

Sys.Date()는 현재 날짜를 반환하고

 

as.Date()는 날짜 객체로 변환함

 

> Sys.Date()
[1] "2022-02-09"


> as.Date('2022-02-09')
[1] "2022-02-09"

> string <- '2022-02-09'

> mode(string)
[1] "character"

> mode(as.Date(string))
[1] "numeric"

 

mode를 씌우면 character와 numeric으로 차이가 있다

 

format(Sys.Date(), format=)으로 주어진 format으로 현재 날짜를 변환함

 

%m은 두자리 숫자의 월

 

%d는 두자리 숫자의 일

 

%y는 뒤에 두자리 숫자의 연도

 

%Y는 네자리의 연도

 

%a는 축약된 요일을 영어로

 

%A는 전체 요일을 영어로

 

%b는 축약된 월이름을 영어로

 

%B는 전체 월이름을 영어로

 

> now <- Sys.Date()

> format(now, format='%m')
[1] "02"

> format(now, format='%d')
[1] "09"

> format(now, format='%y')
[1] "22"

> format(now,format='%a')
[1] "Wed"

> format(now,format='%A')
[1] "Wednesday"

> format(now,format='%b')
[1] "Feb"

> format(now, format='%B')
[1] "February"

> format(now, format='%Y')
[1] "2022"

 

날짜 일부 추출???

 

as.POSIXIt는 시간을 POSIXIt class로 바꿔주는데 여러가지 속성들을 가짐

 

여기서 yday는 1월 1일을 0으로 보고 예를 들어 12월 25일까지는 며칠이나 되는지 계산해줌(358일)

 

> d <- as.Date('2014-12-25')

> p <- as.POSIXIt(d)

> p
[1] "2014-12-25 UTC"

> unclass(p)
$sec
[1] 0

$min
[1] 0

$hour
[1] 0

$mday
[1] 25

$mon
[1] 11

$year
[1] 114

$wday
[1] 4

$yday
[1] 358

$isdst
[1] 0

attr(,"tzone")
[1] "UTC"

> p$yday
[1] 358

 

start, end를 시간으로 두고 seq(start,end,by=)으로 시간 간격 수열을 만들 수 있다

 

> start <- as.Date('2014-12-01')

> end <- as.Date('2014-12-25')

> seq(from=start,to=end,by=1)

 [1] "2014-12-01" "2014-12-02" "2014-12-03" "2014-12-04" "2014-12-05" "2014-12-06" "2014-12-07" "2014-12-08" "2014-12-09"
[10] "2014-12-10" "2014-12-11" "2014-12-12" "2014-12-13" "2014-12-14" "2014-12-15" "2014-12-16" "2014-12-17" "2014-12-18"
[19] "2014-12-19" "2014-12-20" "2014-12-21" "2014-12-22" "2014-12-23" "2014-12-24" "2014-12-25"

 

 

참고

 

https://m.blog.naver.com/coder1252/220985161855

 

R - 기본함수 - paste / paste0

paste 함수에는 두가지 형태가 있습니다. paste는 나열된 원소 사이에 공백을 두고 결과값을 출력합니다. p...

blog.naver.com

 

https://knight76.tistory.com/entry/R-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%ED%86%A0%ED%81%B0%EC%9C%BC%EB%A1%9C-%EB%82%98%EB%88%84%EA%B8%B0-strsplit

 

[R] 문자열을 토큰으로 나누기 (strsplit)

R에서 strsplit()으로 문자열을 토큰으로 나눌 수 있다. strsplit()이 벡터도 처리할 수 있어서 list로 리턴한다. 이를 unlist() 호출해서 배열로 바꾸고, index로 접근한다. > string > splat > splat [[1]] [1]..

knight76.tistory.com

 

http://www.datamarket.kr/xe/board_ecko11/532

 

R - [BigData - R강의 초급] 문자열 찾아바꾸기 – sub, gsub

sub은 문자열에서 특정 패턴을 찾아내여 첫번째에 해당하는 것만 replacement 옵션에 지정된 값으로 바꾸는 함수이고 gsub은 찾아낸 모든 pattern에 대하여 replacement모두 적용하는 것입니다. 즉 sub은 바

www.datamarket.kr

 

http://drtagkim.blogspot.com/2014/12/r.html

 

R에서 시각 데이터 처리

R은 날짜 시각 데이터를 아주 편리하게 처리할 수 있도록 POSIXlt와 POSIXct 클래스를 두고 있습니다. POSIX (Portable Operating System Interfaces: 포직스)는 UNIX 간 소통 가능한 프로그램 인터페이스의 ...

drtagkim.blogspot.com

 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=coder1252&logNo=220947332269 

 

R - 기본함수 - grep / grepl

1. 일반 텍스트 검색grep과 grepl을 사용하여 특정 텍스트를 검색할 수 있습니다. 1) 텍스트 검색grep을 사...

blog.naver.com

 

 

TAGS.

Comments