티스토리 뷰

반응형

데이터의 n번째 이전(이후) 행의 값 가져오기


data.table::shift()


shift(x,   # 벡터(원본 데이터) 

      n=1L,  # 몇 번째 이전(이후)값을 가져올지 지정

      fill=NA,  # 채울 값이 없을 경우 default값 설정 

      type=c("lag", "lead"),  # 이전 값을 가져올지 이후 값을 가져올지

      give.names=FALSE)   # 값 이름 지정 


### delivery_02.csv 파일을 읽고

> del <- read.csv('delivery_02.csv', stringsAsFactors = F)

> str(del)

> head(del)

      일자 시간대                 업종       시도 시군구   읍면동 통화건수

1 20180201      0 음식점-족발/보쌈전문 서울특별시 강남구   논현동        5

2 20180201      0 음식점-족발/보쌈전문 서울특별시 강남구   역삼동        5

3 20180201      0 음식점-족발/보쌈전문 서울특별시 강서구 내발산동        5


### 1) 일자별 총 통화건수와 전일대비 증감률 출력 = (오늘 - 이전) / 이전 * 100

# (연산은 행 별로 수행하므로, 연산하고자하는 값이 같은 행에 있어야 함)

> library(plyr)

> df2 <- ddply(del, .(일자), summarise, sum = sum(통화건수))

> df2

       일자   sum

1  20180201 39653

2  20180202 46081

3  20180203 54124

...


> install.packages('data.table')

> library(data.table)

> shift(df2$sum, fill = df2$sum[1])  # 1번째 이전 값 가져오기, 채울 값이 없을 경우, sum 컬럼의 첫 번째 값 가져오기

 [1] 39653 39653 46081 54124 50323 35023 38628 39371 40153 49116 54101 50795 36734 43097 45282 28201 16570 34789 43692 34259 38036 39381 42309 50270 53415 51286 36141 38783

> shift(df2$sum, n = 2)   # 2번째 이전 값 가져오기

 [1]    NA    NA 39653 46081 54124 50323 35023 38628 39371 40153 49116 54101 50795 36734 43097 45282 28201 16570 34789 43692 34259 38036 39381 42309 50270 53415 51286 36141

> shift(df2$sum, type = 'lead')  # 1번째 이후 값 가져오기

 [1] 46081 54124 50323 35023 38628 39371 40153 49116 54101 50795 36734 43097 45282 28201 16570 34789 43692 34259 38036 39381 42309 50270 53415 51286 36141 38783 52323    NA

> shift(df2$sum, ,n = 2, type = 'lead')  # 2번째 이후 값 가져오기

 [1] 54124 50323 35023 38628 39371 40153 49116 54101 50795 36734 43097 45282 28201 16570 34789 43692 34259 38036 39381 42309 50270 53415 51286 36141 38783 52323    NA    NA





참고: KIC 캠퍼스 머신러닝기반의 빅데이터분석 양성과정

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday