본문 바로가기
R

R 기초 - 6

by winston1214 2020. 7. 10.
반응형

python pandas 모듈의 꽃인 dataframe 형식을 R로 구현해보겠다.

name <- c("하나", "두나", "세나")
age <- c(22, 20, 25)
gender <- factor(c("M", "F", "M"))
blood <- factor(c("A", "O", "B"))
patients <- data.frame(name, age, gender, blood)
patients
'''
  name age gender blood
1 하나  22      M     A
2 두나  20      F     O
3 세나  25      M     B
'''
str(patients)
'''
'data.frame':	3 obs. of  4 variables:
 $ name  : Factor w/ 3 levels "두나","세나",..: 3 1 2
 $ age   : num  22 20 25
 $ gender: Factor w/ 2 levels "F","M": 2 1 2
 $ blood : Factor w/ 3 levels "A","B","O": 1 3 2
 '''

여기서 factor라는 것이 있는데 이는 보통 범주형 데이터일 때 많이 쓴다. 요소를 넣는다고 생각하면 된다.

벡터로 각각 저장하면서 컬럼명을 지정하고 데이터프레임 형식으로 만든다. str 값 즉 structure를 출력하면 데이터 프레임형식으로 저장되어있음을 알 수 있다.

이는 좀 귀찮은 방법이니 편한 방법을 알아보자

# edit함수 이용해 데이터프레임 생성
test<-data.frame()
test<-edit(test)

 edit() 함수를 실행하면 

edit 실행화면

이와 같이 엑셀화면 처럼 띄워져서 값을 입력해서 데이터프레임을 생성할 수 있다. 이를 출력하면

test
'''
  var1 var2
1    1    2
2    2    5
3    3    4
'''

이와 같은 형식으로 데이터프레임이 출력됨을 알 수 있다.

다음으로 데이터프레임의 인덱싱 및 슬라이싱을 알아보자

파이썬에서는 특정 열의 값을 추출하려면 df['col'] 을 사용해서 하지만 R은 조금 다르다. R은 $를 통해 데이터 열의 값을 추출할 수 있다.

# 데이터 프레임 요소에 접근 : $, [,]
patients$name # name 속성값 출력
'''
[1] 하나 두나 세나
Levels: 두나 세나 하나
'''
patients[1, ] # 1행 값
'''
  name age gender blood
1 하나  22      M     A
'''
patients[, 2] # 2열 값
'''
[1] 22 20 25
'''
patients[3, 1] # 3행 1열 값
'''
[1] 세나
Levels: 두나 세나 하나
'''
patients[patients$name=="하나", ] #하나에 대한 정보 추출
'''
name age gender blood
1 하나  22      M     A
'''
patients[patients$name=="하나", c("name", "age")] #하나의 이름과 나이 추출
'''
  name age
1 하나  22
'''

나머진 거의 python과 동일하므로 설명을 생략하고 다만 시작값이 1이라는 점을 기억하면 된다.

그리고 R에서 제공하는 신기한 함수가 있다. 바로 attach와 detach이다.

이를 R에서 제공하는 내장 데이터셋 cars 를 이용하여 설명하겠다.

head(cars) # cars 데이터셋 확인
'''
  speed dist
1     4    2
2     4   10
3     7    4
4     7   22
5     8   16
6     9   10
'''
speed # error
attach(cars) # attach 속성을 변수로 만듬
speed # speed 변수명 이용 가능
# speed의 값 추출
detach(cars) # detach 속성의 변수사용 해제
speed # error

attach 함수는 cars의 컬럼값을 하나의 변수로 만들어주는 것이다. 이를 해제하기 위해선 detach값을 사용하여 해제시킨다. 즉, speed라는 컬럼이름이 변수로 할당되는 것이다.

다음으로 subset함수이다. 바로 코드로 설명하겠다.

# subset 일부 데이터만 추출 -> 데이터를 분리할 때 많이 사용
subset(cars, speed > 20) # 속도가 20초과인 데이터
'''
   speed dist
44    22   66
45    23   54
46    24   70
47    24   92
48    24   93
49    24  120
50    25   85
'''
subset(cars, speed > 20, select = c(dist)) # 속도 20초과, dist 열 추출
'''
   dist
44   66
45   54
46   70
47   92
48   93
49  120
50   85
'''
subset(cars, speed > 20, select = -c(dist)) # 속도 20초과, dist 열 제외
'''
   speed
44    22
45    23
46    24
47    24
48    24
49    24
50    25
'''

데이터의 일부만 슬라이싱하는 함수이다. 이를 통해 조건에 맞는 값들을 추출할 수 있다. select 파라미터를 통해 특정 열만 추출할 수 있다.

 

반응형

'R' 카테고리의 다른 글

R 기초 - 7  (0) 2020.07.10
R 기초 - 5  (0) 2020.07.10
R 기초 - 4  (0) 2020.07.10
R 기초 - 3  (0) 2020.07.10
R 기초 - 2  (0) 2020.07.10

댓글