데이터분석 전문가(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
http://www.datamarket.kr/xe/board_ecko11/532
http://drtagkim.blogspot.com/2014/12/r.html
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=coder1252&logNo=220947332269
'프로그래밍 > R 프로그래밍' 카테고리의 다른 글
데이터분석 전문가(ADP)를 위한 R프로그래밍 기초편7 (0) | 2022.02.12 |
---|---|
데이터분석 전문가(ADP)를 위한 R프로그래밍 기초편5 (0) | 2022.02.08 |
데이터분석 전문가(ADP)를 위한 R프로그래밍 기초편4 (0) | 2022.02.06 |
데이터분석 전문가(ADP)를 위한 R프로그래밍 기초편3 (0) | 2022.02.05 |
데이터분석 전문가(ADP)를 위한 R프로그래밍 기초편2 (0) | 2022.01.31 |