반응형

R 39

특정 조건 행 (row) 갯수 세기 dplyr::count

열의 수를 세는 가장 좋은 function은 count입니다. 예를 들어 df라는 데이터의 총 observation은 (즉, 열의 수) 몇 개지? 하면 그냥 library(tidyverse) count(df) 하면 끝이죠. 근데 df라는 데이터프레임의 Stock이라는 칼럼 중에 빈칸이 없는 경우의 수는 몇 개지?라고 하면 (여기서 Stock 칼럼은 문자열이라고 칩시다), dplyr를 통해 이렇게 치면 됩니다. %>%의 힘. df %>% count(Stock!="")

R/R basic 2022.06.14

열(row) 제거하기

앞서 칼럼(column)제거하는 글을 올렸는데 정작 열을 제거하는 법은 올리지 않았네요. 특정 열(column)만 선택 (keep) 혹은 제거(drop)하기 (tistory.com) 특정 열(column)만 선택 (keep) 혹은 제거(drop)하기 R에서 특정 열(칼럼)을 선택 혹은 제거하는 방법은 적어도 3~4가지는 되는 것 같습니다. 우선, 데이터프레임을 하나 만들어봅니다. a df라는 데이터프레임에 각각 number, fruit, TF라는 칼럼이 있는데, approximation.tistory.com 칼럼을 제거하는 법은 그냥 NULL을 쓰거나 subset 함수를 이용하라고 했는데, 열(row)을 제거하는 법은 그냥 더 간단합니다. 예를 들어 아래와 같은 경우가 있다고 해보죠. stackoverf..

R/R basic 2022.06.09

데이터프레임을 엑셀파일로 변환? 그냥 csv파일로 바꾸자 (write.csv)

앞에서는 엑셀 파일을 부르는 함수에 대해서 봤는데요 (read_excel) 이번에는 R에서 작업한 데이터프레임을 엑셀 파일로 export하는 방법에 대해서 알아보고자 합니다. 검색해보니 xlsx라는 라이브러리에 들어가서 write.xlsx()라는 함수를 쓰라고 나오는데요. 왜 그런지는 모르겠는데 저는 자꾸 오류가 납니다. 그래서 그냥 속편하게 write.csv 함수 쓰는 게 나은 것 같아요. write.csv(final_homeless, file="homeless.csv") final_homeless 라는 R 데이터베이스를 내가 지정한 폴더에 homeless.csv라는 파일로 바꿔라. 이게 차라리 더 나을 것 같다는 생각이 드네요.

R/R basic 2022.01.12

날짜 데이터 읽기 (2): 두 개 이상 날짜 칼럼 합쳐서 변환 (with, sprintf)

앞서 말한 것처럼 날짜는 일반적으로 as.Date()로 변환하고 포맷만 잘 지정해주면 문자도 날짜로 잘 인식해주는데, 가끔 보다보면 날짜 칼럼이 각각 떨어져 있는 경우가 있습니다. 아래처럼 연도와 월 (혹은 일)이 각각 다른 칼럼에 있는 경우가 있죠. 이 때 이걸 어떻게 통합해서 날짜 데이터로 변환할 수 있느냐는 질문이 생길 수 있는데요. 이 때 사용해야 하는 함수가 두 개 있는데 하나가 with이고, 다른 하나가 sprintf입니다. 우선 df라는 데이터베이스에 있는 두 날짜 칼럼을 합쳐서 새로운 날짜 칼럼으로 만들어라 하는 명령문은 아래와 같구요 (포맷은 그 때마다 다릅니다). df$Date

R/R basic 2021.05.25

날짜 데이터 읽기 (1): 문자를 날짜로 데이터 변환 (as.Date)

R에서 날짜 변수들이 있는 경우가 종종 있는데요. 예를 들어 특정 칼럼 항목에 2020-01-01 같은 문자 값이 들어가 있으면 R이 무조건 날짜라고 인식하는 게 아니라 이건 날짜 변수야 라고 지정해주는 게 필요합니다. 예를 들어 df라는 데이터프레임에 날짜 데이터가 들어간 칼럼 이름이 strDate라고 하면 (아직까지는 문자로 인지되고 있습니다. 날짜가 아니라) df$Dates

R/R basic 2021.05.23

데이터 문자값 바꾸기 (sub, gsub 함수)

R로 작업을 하다보면 데이터를 바꾸고 싶을 때가 가끔 생기는데, 특히 문자(character)를 바꿔야 할 때가 종종 있습니다. 이 때 쓰이는 대표적인 함수가 sub 혹은 gsub 함수인데요. sub은 맨 처음 나오는 문자만 바꾸지만, 일괄적으로 특정 문자를 모조리 바꿔라할 때는 gsub이 많이 사용됩니다. 데이터를 다루다보면 gsub을 훨씬 더 많이 씁니다. gsub의 기본 조건은 다음과 같습니다. gsub('바꿔야 할 문자', '새롭게 대체할 문자', 범위 (데이터프레임 전체든, 일부 칼럼이든, 벡터이든)) 예를 하나 들어보죠. 데이터를 열었는데 2012, 2013, 2014... 등으로 표기되어야 할 year column에 이상하게 X2012, X2013, X2014 이런 식으로 X가 불필요하게 들..

R/R basic 2021.05.04

%>%란 무엇인가 (dplyr)

dplyr library에 가장 많이 쓰이는 기능? 중에 하나가 %>%일 겁니다. 이게 무슨 말이냐면 쉽게 말해 왼쪽있는 걸 한 다음에 오른쪽에 있는 걸로 해라 이런 pipe 기능 같은 건데요 (pipe랑 비슷하게 생기지 않았습니까?). 뭐 chain 기능 같은 것이기도 합니다. 예를 들어 iris %>% head() %>% summary() 이런 게 있다고 하면 이 뜻은 iris라는 데이터프레임을 열어서 거기 첫 5줄에 있는 내용 뽑은 다음에 (head) 그것을 요약해라 (summary) (평균 등) 이런 것인데요. 이 기능은 사실 summary(head(iris))라는 같은 것이라고 보면 됩니다. 결국 nesting으로 대체할 수도 있긴 한데 그러면 사실 막 헷갈리기 때문에 (괄호 3개 넘어가면 헷갈..

R/R basic 2021.04.30

3개 이상의 데이터프레임을 한 번에 합치기 (join 함수)

앞서 dplyr library에서 join 함수에 대해서 배웠는데, A라는 데이터프레임과 B라는 데이터프레임을 name이라는 공통된 칼럼으로 합친다고 하면 (inner_join을 써보겠습니다 여기선), inner_join(A, B, by="name") 뭐 이런 식으로 하면 되는데요. 만약 A, B, C, D, and, E라는 데이터프레임을 합친다고 하면 어떻게 한 줄로 만들 수 없을까요. list에 데이터프레임 이름을 넣어서 하는 방식도 있을 수 있겠지만, 여기서는 dplyr %>% 기능을 쓰면 편합니다. %>%라는 dplyr에서 자주 이용하는 기능인데요 쉽게 얘기해서 파이프 (pipe)같은 기능이라고 보시면 됩니다. 왼쪽 있는 걸 수행한 다음에 오른쪽 걸 수행해라 뭐 이런 식입니다. 이걸 결합하면 다음..

R/R basic 2021.04.26
반응형