본문 바로가기
Data Science/R

[R 공부하기] 4. 데이터프레임 - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2024. 4. 10.
728x90
반응형

 

목차

  1. 데이터프레임
  2. 데이터프레임 생성
  3. 데이터프레임 다루기
  4. 데이터프레임에서 사용하는 함수
  5. 파일 데이터 읽기/쓰기

 

1. 데이터프레임

데이터프레임은 서로 다른 형태의 데이터를 2차원 데이터 테이블 형태로 묶을 수 있는 자료구조이다.

매트릭스는 저장되는 모든 값들이 동일한 자료형인 반면, 데이터프레임은 서로 다른 자료형의 값들이 함께 저장된다.

 

2. 데이터프레임 생성

데이터프레임을 생성할 때는 data.frame() 함수를 사용하여 생성한다.

data.frame() 함수 안에 생성할 자료들을 벡터 형식으로 입력하면 해당 벡터들이 데이터프레임으로 형성된다.

생성한 데이터프레임의 자료형을 class() 함수로 확인해 보면 data.frame 자료인 것을 확인할 수 있다.

또한 str() 함수를 통해 데이터프레임의 정보를 간단하게 살펴볼 수 있다.

 

데이터프레임을 생성할 때 data.frame() 함수 안에 키 = 벡터 형식으로 작성하면 마찬가지로 데이터프레임을 동일하게 생성할 수 있다.

 

data.frame() 함수를 사용하지 않고도 데이터프레임을 생성할 수 있는데, 데이터프레임이 저장된 외부 파일을 불러와 생성할 수도 있다.

그렇게 생성한 데이터프레임의 기본 정보를 살펴보면 동일하게 데이터프레임 형태인 것을 확인할 수 있다.

 

외부 파일은 txt 파일, csv 파일 등을 불러올 수 있다.

txt 파일은 read.table() 함수를 활용해 파일을 불러오고, csv 파일은 read.csv() 함수를 활용해 파일을 불러온다.

read.table() 함수에 header 옵션을 사용하면 데이터를 불러올 때 첫 번째 행을 header 정보로 불러온다.

read.csv() 함수는 header 옵션이 기본적으로 적용된다.

반응형

3. 데이터프레임 다루기

데이터프레임의 각 데이터를 추출할 때는 데이터프레임이 2차원 데이터 테이블 형태이므로 행의 위치와 열의 위치를 지정해줘야 한다.

행의 위치와 열의 위치를 지정해 줄 때는 매트릭스에서 지정해 준 것처럼 지정해 주면 된다.

벡터 형식으로 지정하여 여러 개의 값을 한 번에 지정해 줄 수도 있다.

그렇게 출력된 데이터의 자료는 벡터 형식으로 출력된다.

 

데이터프레임에서 특정 열을 추출할 때는 데이터프레임명$칼럼명 형태로 추출할 수 있다.

데이터프레임명$칼럼명 형태로 추출한 자료는 벡터 형태로 결과가 출력된다.

또한 데이터프레임명[["칼럼명"]] 형태로도 추출할 수 있는데 이렇게 추출한 자료 역시 벡터 형태이다.

만약 데이터프레임명["칼럼명"] 형태로 추출하면 데이터프레임 형태로 결과가 출력된다.

 

평균을 계산해 주는 함수인 mean() 함수벡터 형태로 반환되는 값을 넣으면 원활히 계산이 수행되지만, 데이터프레임 형태로 반환되는 값을 넣으면 연산이 불가능하다.

 

데이터프레임에서 특정 열의 자료형을 바꿀 때는 as.factor() 함수를 사용하면 된다.

as.factor() 함수를 사용하면 팩터 형태로 지정한 열의 자료형이 바뀐다.

벡터 형태의 자료형을 넣어야 자료형이 바뀐다.

 

데이터프레임에 칼럼을 추가할 때는 데이터프레임에 새로운 칼럼을 생성하고 값을 지정해 주면 된다.

반대로 칼럼을 삭제할 때는 데이터프레임에서 삭제할 칼럼을 지정하고 NULL 값으로 지정해 주면 해당 칼럼이 삭제된다.

 

칼럼을 선택할 때 여러 개의 칼럼을 한 번에 선택하려면 데이터프레임에서 데이터를 추출할 때 열의 위치를 지정하는 부분에 여러 개의 칼럼이나 위치를 지정해 주면 된다.

칼럼의 이름으로 지정할 때는 c() 함수를 활용해 칼럼 이름을 묶어 지정해 주면 된다.

칼럼의 이름이 아니라 위치로 지정할 때는 c() 함수를 활용해 위치를 여러 개 지정해 주면 된다.

이때 칼럼의 위치로 지정하면 c() 함수 앞 - 연산자를 사용할 수 있지만, 칼럼의 이름으로 지정하면 칼럼의 이름이 문자 벡터이므로 - 연산자를 사용할 수 없다.

마지막으로 행의 위치 지정 없이 칼럼의 이름만 넣으면 모든 행의 해당 칼럼의 데이터들이 출력된다.

 

열을 지정하는 것 말고 행을 지정할 때는 마찬가지로 데이터프레임에서 데이터를 추출할 때 행의 위치를 지정하는 부분에 추출할 행을 지정해 주면 된다.

행을 지정해 줄 때 특정 조건을 넣어서 원하는 행들만 추출할 수도 있다.

 

이를 응용하면 특정 조건을 만족하는 행 중에서 특정 칼럼의 데이터를 추출하여 새로운 데이터프레임을 생성할 수도 있다.

특정 조건을 줄 때는 칼럼을 지정하고 그 칼럼의 값에 대한 조건을 지정해 주면 된다.

조건을 여러 개 줄 때는 &(and) 연산자 |(or) 연산자를 사용할 수 있다.

또한 %in% 연산자를 사용하면 해당 칼럼의 값에 특정 값이 포함되는지의 여부를 확인하는 조건을 만들 수 있다.

4. 데이터프레임에서 사용하는 함수

위에서 한 번 언급했듯이 mean() 함수는 평균을 구해주는 함수이다.

벡터 형식의 데이터를 mean() 함수에 넣어주면 해당 값들의 평균을 구해준다.

colMeans() 함수는 데이터프레임에서 특정 칼럼의 평균을 한 번에 확인할 수 있는 함수이다.

colMeans() 함수 안에 특정 칼럼을 지정하면 지정한 칼럼별 평균을 계산한다.

rowMeans() 함수는 데이터프레임의 특정 행의 평균을 한 번에 확인할 수 있는 함수이다.

 

rowSums() 함수는 각 행별 칼럼들의 총합을 구해주는 함수이다.

rowSums() 함수 안에 칼럼 위치를 지정하면, 각 행별 지정한 칼럼들의 합을 모두 더한 결과를 반환해 준다.

colSums() 함수는 특정 칼럼별 총합을 구해주는 함수이다.

 

 

str() 함수는 데이터프레임의 각 칼럼별 자료형과 데이터를 간단하게 확인할 수 있는 함수이다.

 

attributes() 함수는 데이터프레임의 각 칼럼 이름과 자료의 형태, 행 이름을 확인할 수 있다.

 

dim() 함수는 해당 데이터프레임의 행과 열의 개수를 확인할 수 있는 함수이다.

 

ncol() 함수는 해당 데이터프레임의 열 개수를 확인할 수 있는 함수이다.

nrow() 함수는 해당 데이터프레임의 행 개수를 확인할 수 있는 함수이다.

 

colnames() 함수 names() 함수는 해당 데이터프레임의 열 이름을 확인할 수 있는 함수이다.

 

rownames() 함수는 와 row.names() 함수는 해당 데이터프레임의 행 이름을 확인할 수 있는 함수이다.

 

summary() 함수는 해당 데이터프레임에서 숫자형태로 이루어진 칼럼의 기술통계값을 보여주는 함수이다.

 

head() 함수는 해당 데이터프레임의 앞부분 일부를 출력하는 함수이다.

tail() 함수는 해당 데이터프레임의 뒷부분 일부를 출력하는 함수이다.

두 함수의 기본값은 6이고, 특정 값을 지정하면 지정한 개수만큼 반환해 준다.

 

subset() 함수는 특정 데이터프레임에서 조건에 맞는 행들을 추출하는 함수이다.

subset() 함수 안에 데이터프레임, 조건을 넣으면 해당 조건을 만족하는 행들만 추출해 준다.

만약 selet 옵션을 사용하면 행뿐만 아니라 칼럼도 지정해 줄 수 있다.

 

class() 함수는 해당 데이터의 형태를 확인할 수 있는 함수이다.

is.matrix() 함수는 해당 데이터의 형태가 매트릭스인지 아닌지 판별해 주는 함수이다.

is.data.frame() 함수는 해당 데이터의 형태가 데이터프레임인지 아닌지 판별해 주는 함수이다.

 

as.matrix() 함수는 해당 데이터를 매트릭스로 변환해 주는 함수이다.

 

5. 파일 데이터 읽기/쓰기

외부 파일에 있는 데이터를 불러와 데이터프레임으로 활용할 수 있는데, .txt 확장자를 가지는 파일을 읽어올 때는 read.table() 함수를 사용하면 된다.

read.table() 함수를 사용하여 txt 파일을 불러오면 기본적으로 5개의 행이 나타나게 된다.

read.table() 함수는 기본적으로 header 옵션이 FALSE로 지정되어 있다.

만약 header 옵션을 T나 TRUE로 바꾸면 불러오는 파일의 첫 번째 행을 header로 처리하여 불러올 수 있다.

 

read.table() 함수에서 nrow 옵션은 데이터를 불러올 때 지정한 개수만큼만 행을 불러온다.

skip 옵션은 데이터를 불러올 때 지정한 개수만큼 위에서부터 행을 생략하여 불러온다.

 

데이터를 csv 파일로 저장할 때는 write.csv() 함수를 사용하면 된다.

write.csv() 함수 안에 저장할 데이터, "저장할 파일명"을 지정하면 지정한 파일명으로 해당 데이터가 저장된다.

write.csv() 함수에는 quote 옵션, row.names 옵션, fileEncoding 옵션 등이 존재한다.

다양한 옵션들은 사용할 때 검색하여 사용하면 된다.

 

엑셀 파일(.xlsx)에 데이터가 저장되어 있을 경우 read_excel() 함수를 사용하여 데이터를 읽을 수 있다.

read_excel() 함수를 사용하려면 readxl 패키지를 불러와야 한다.

readxl 패키지를 설치하고 library() 함수로 readxl 패키지를 불러오면 read_excel() 함수를 사용할 수 있다.

 

read_excel() 함수를 사용하여 데이터를 읽어오면 tibble 형태로 객체가 반환된다.

read_excel() 함수를 사용하여 데이터를 읽어올 때 엑셀 파일의 시트를 지정해 줄 수 있다.

시트 번호를 지정하거나 시트의 이름을 지정하여 해당 시트의 데이터만 읽어올 수 있다.

728x90
반응형