인포위드

R프로그래밍 list(리스트)와 dataframe(데이터프레임) 본문

R

R프로그래밍 list(리스트)와 dataframe(데이터프레임)

JSE99 2020. 3. 25. 01:22

안녕하세요 인포위드 입니다.

이번 포스팅에서는 R프로그래밍 list(리스트)와dataframe(데이터프레임)에

대해서 알아보도록 하겠습니다.

1.list(리스트)개념 및 활용

#1

먼저 R에서 list란 여러가지 R오브젝트들을 원소로 구성된 R오브젝트를 말합니다.

리스트의 원소로는 벡터, 데이터프레임 등등 여러가지가 있습니다..

 

바로 list(리스트) 코드 예제를 들어보도록 하겠습니다.

x1 = list(name="A", age="20", job="student")

list 코드도 상당히 쉽습니다. 

위에 코드 확인하시면 list 코드를 이용해 x1이라는 데이터집합을 만들었습니다.

보시다시피 x1은 name, age ,job이라는 구성요소로 이루어져있습니다.

x1을 R에서 실행시켜보도록 하겠습니다.

x1을 실행시킨 결과 name이라는 구성요소에 A,

age라는 구성요소에 20,  job이라는 구성요소에 student가 산출된걸 확인 하실수 있습니다.

 

이런식으로 list 코드를 이용해서 여러가지 데이터들을 저장 및 분류 작업이 가능합니다.

어려운 R코드가 아니니 숙지해주시길 바랍니다.

 

#2

list를 생성하는법은 위에서 다루었으니 이번에는 생성한 리스트내

데이터탐색하는 내용을 알아보도록 하겠습니다.


x1 = list(name="A", age="20", job="student")
x1[[1]]
x1[[2]]
x1[[3]]

아까 위에서 만든 x1이라는 리스트를 그대로 가져오겠습니다.

위에서만든 x1의 첫번째 탐색해야하니 x1[[1]] 이라는 코드를 실행시켜 보겠습니다.

실행시켜보면 x1이 name, age, job 순서로 이루어져있기 때문에

그중 첫번째 구성요소인 name에 대한 정보를 출력해줍니다.

x1[[2]]를 실행시키면 age에 대한 정보인 20이 출력된다는걸 알수있습니다.

 

#3

리스트내 구성요소가 문자일때의 데이터탐색도 가능합니다.


x1 = list(name="A", age="20", job="student")
x1[["name"]]
x1[["age"]]
x1[["job"]]

위에서는 x1[[1]] 이런식으로 순서로 탐색을 했지만 이와 동일한 원리로

x1[["name"]]처럼 [[  ]] 안에 문자를 넣고 탐색하셔도 무방합니다.

#4

리스트 내 1~3번째 데이터를 지정해서 불러오고싶을때 방법


x1 = list(name="A", age="20", job="student")
x1[1:3]

리스트를 생성하고 리스트 내 데이터를 몇번째에서 몇번째까지 지정해서 부르고 싶을 경우에는 

x1[1:3] 이런식으로   :   기호를 사용해서 순서를 지정할수 있습니다.

예를 들어 2~3번째 데이터를 불러내고싶다면? x1[2:3] 이런식으로 코드를 작성하면 됩니다.

x1[1:3]을 실행시킨 결과 name, age, job에 대한 정보가

정상적으로 나오는걸 확인할수 있습니다.

 

#5

리스트의 구성요소 개수를 파악하고 싶을때는 length 함수를 사용합니다.


x1 = list(name="A", age="20", job="student")
length(x1)

x1이라는 리스트의 구성요소 개수가 많아질 경우에는 눈으로 서치하기 한계가 있기때문에 

length라는 함수를 이용해서 한번에 개수를 셀수있습니다. 

이런식으로 한번에 x1의 구성요소 개수를 출력해주는데 지금은 list자체의 구성요소 개수가 3개밖에 없어서 

육안으로 확인해도 충분하지만 구성요소가 30개만 넘어도 사실상 눈으로 확인하는게 정확도면이나 속도면에서 비효율적이기에 length 함수를 알아두시면 편하게 확인하실수 있습니다.

 

#6

리스트끼리도 결합이 가능합니다. 

각각의 리스트를 만들고 한꺼번에 결합을 하는 방법을 알려드리도록 할게요.

사실 방법이라고 할것도 없을정도로 간단합니다.


a1 = list(b=1:4, c=1:4)
a2 = list(d=5:8, e=5:8)
a3 = c(a1,a2)
a3

a1, a2 라는 list 데이터를 각각 만들었습니다. 

그냥 list끼리 결합하고 싶으시면

c(  ,  ) 코드로 리스트끼리 합쳐주시면 결합이 가능합니다.

이런식으로 a1, a2라는 리스트 데이터들을 합쳐서

a3라는 데이터를 생성할수 있습니다.

 

2. Dataframe(데이터프레임)개념 및 활용

R을 공부하다보면 dataframe을 진짜 많이 사용하게 됩니다. 

일단 dataframe은 테이블의 형태를 갖춘 데이터 객체를 의미합니다.

또한 dataframe은 변수의 길이가 같아야 하는것이 기본 규칙입니다.

 

#1

dataframe을 직접 만들어보도록 하겠습니다.


name = c("A", "B")
job = c("teacher", "no job")
sex = c("F", "M")
pay = c("4000$", "0$")
satisfaction = c("Bad", "SOSO")
info= data.frame(name,sex,job,pay,satisfaction)
info

이런식으로 name(이름), job(직업), sex(성별), pay(급여), satisfaction(만족도)로

이루어진 info라는 dataframe(데이터프레임)을 만들었습니다.

info라는 데이터프레임을 출력시켜보니 위와같은

정보가 산출되는걸 확인하실수 있습니다.

 

 

제가 위에서 데이터프레임은 변수의 길이가 같아야 한다고 언급했는데 제가 만든 info라는 데이터프레임

구성코드를 보시면 데이터프레임의 모든변수의 길이가 2개로 이루어져있는걸 확인하실수 있습니다.

데이터프레임에서 변수의 길이가 같아야하는 조건은 상당히 중요하기 때문에 숙지해주세요.

 

#2

각 dataframe 구성요소에 이름을 지정하는 방법을 알려드리도록 하겠습니다.

위에서 만든 dataframe을 이용하도록 할게요.


name = c("A", "B")
job = c("teacher", "no job")
sex = c("F", "M")
pay = c("4000$", "0$")
satisfaction = c("Bad", "SOSO")
info= data.frame(name,sex,job,pay,satisfaction)

a = data.frame(이름=name,성별=sex,직업=job,
               월급=pay,만족도=satisfaction)
               

위에서 만든 dataframe에서는 name, job,sex,pay로

출력되는걸 임의로 지정할수 있습니다.

 

data.frame(바꾸고싶은 이름= 기존 데이터프레임 구성요소) 이런식으로

코드를 따로 작성하면 각 구성요소에 이름을 지정할수 있습니다.

이런식으로 위에서는 name, sex, job, pay, satisfaction으로

나오던게 제가 지정한 이름으로 출력되는걸 확인할수 있습니다.

 

#3

head() 함수를 이용해서 dataframe 요약 출력하기


head(a)
> a
  이름 성별    직업  월급 만족도
1    A    F teacher 4000$    Bad
2    B    M  no job    0$   SOSO

head(a,2)
> head(a,2)
  이름 성별    직업  월급 만족도
1    A    F teacher 4000$    Bad
2    B    M  no job    0$   SOSO

head(a)["성별"]
> head(a)["성별"]
  성별
1    F
2    M

head(a)[2]
> head(a)[2]
  성별
1    F
2    M

 

이런식으로 head 함수를 이용해 기존에 만들어둔 a라는 데이터프레임을

원하는 정보만 요약해서 출력할수 있습니다.

 

 

#4

dataframe에서 nrow와 ncol을 이용해 행,열 개수세기


> a
  이름 성별    직업  월급 만족도
1    A    F teacher 4000$    Bad
2    B    M  no job    0$   SOSO
nrow(a)
> nrow(a)
[1] 2

ncol(a)
> ncol(a)
[1] 5

이런식으로 nrow 와 ncol 코드를 이용해서 생성한

데이터프레임의 행,열 개수를 쉽게 셀수가 있습니다.

 

#5

nrow( )와 ncol( )함수를 합쳐놓은 느낌의 dim( )함수가 있는데

행과 열을 한꺼번에 출력해주는 함수입니다.

> a
  이름 성별    직업  월급 만족도
1    A    F teacher 4000$    Bad
2    B    M  no job    0$   SOSO
dim(a)
> dim(a)
[1] 2 5

위에서는 nrow와 ncol로 따로따로 출력했어야 했는데 dim( ) 함수로 한번에

행과 열 모두를 출력하는 함수도 있으니 기억해주세요.

 

#6

name( ) 함수

> a
  이름 성별    직업  월급 만족도
1    A    F teacher 4000$    Bad
> names(a) 
[1] "이름"   "성별"   "직업"   "월급"   "만족도"

 

dataframe을 생성하고 열에 있는 이름들을 한꺼번에 출력해주는 함수가 name( ) 함수입니다.

name( ) 함수를 사용하면 한번에 dataframe이 어떠한 구성요소로 이루어져 있는지 확인할수 있습니다.

 


이번 포스팅에서는 R프로그래밍 list(리스트)와 dataframe(데이터프레임)에 대해 알아보았는데 

어려운 파트가 아니기 때문에 꼼꼼히 숙지하시길 바라면서 이번 포스팅은 여기서 마치도록 하겠습니다.

 

포스팅 읽어주셔서 감사합니다.

Comments