작성자: admin 작성일시: 2016-09-29 19:28:25 조회수: 120 다운로드: 19
카테고리: R 태그목록:

R 데이터프레임 변환

열 단위의 수식 변환

데이터프레임의 데이터 값을 열 단위로 수식을 사용하여 변환하려면 transform 명령을 사용한다.

In [2]:
head(airquality)
OzoneSolar.RWindTempMonthDay
41 190 7.467 5 1
36 118 8.072 5 2
12 149 12.674 5 3
18 313 11.562 5 4
NA NA 14.356 5 5
28 NA 14.966 5 6

이 데이터에서 Ozone 데이터 값의 부호를 반대로 바꾸는 방법은 다음과 같다.

In [4]:
head(transform(airquality, Ozone=-Ozone))
OzoneSolar.RWindTempMonthDay
-41 190 7.467 5 1
-36 118 8.072 5 2
-12 149 12.674 5 3
-18 313 11.562 5 4
NA NA 14.356 5 5
-28 NA 14.966 5 6

화씨 단위로 된 Temp 데이터의 값을 섭씨로 바꾸려면 다음과 같다.

In [5]:
head(transform(airquality, Temp=(Temp-32)/1.8))
OzoneSolar.RWindTempMonthDay
41 190 7.4 19.444445 1
36 118 8.0 22.222225 2
12 149 12.6 23.333335 3
18 313 11.5 16.666675 4
NA NA 14.3 13.333335 5
28 NA 14.9 18.888895 6

기존의 열 데이터를 수식으로 변환한 값을 새로운 열로 추가할 수도 있다. 이 때는 기존에 존재하지 않는 열 이름을 인수 이름으로 지정한다.

In [7]:
head(transform(airquality, new_field_name=-Ozone))
OzoneSolar.RWindTempMonthDaynew_field_name
41 190 7.467 5 1 -41
36 118 8.072 5 2 -36
12 149 12.674 5 3 -12
18 313 11.562 5 4 -18
NA NA 14.356 5 5 NA
28 NA 14.966 5 6 -28

행 분할

숫자 기준에 따라 행을 분할하는 작업은 분할에 필요한 카테고리 열을 추가하는 것과 논리적으로 동일하다. cut 명령을 사용하면 실수 값을 카테고리값으로 변환할 수 있다.

In [1]:
ages <- c(20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32)
bins <- c(18, 25, 35, 60, 100)
cats <- cut(ages, bins)
cats
  1. (18,25]
  2. (18,25]
  3. (18,25]
  4. (25,35]
  5. (18,25]
  6. (18,25]
  7. (35,60]
  8. (25,35]
  9. (60,100]
  10. (35,60]
  11. (35,60]
  12. (25,35]
In [6]:
cats <- cut(ages, bins, labels=c('Youth', 'YoungAdult', 'MiddleAged', 'Senior'))
cats
  1. Youth
  2. Youth
  3. Youth
  4. YoungAdult
  5. Youth
  6. Youth
  7. MiddleAged
  8. YoungAdult
  9. Senior
  10. MiddleAged
  11. MiddleAged
  12. YoungAdult
In [7]:
df <- data.frame(ages)
df
ages
20
22
25
27
21
23
37
31
61
45
41
32
In [8]:
df$age_cat <- cats
df
agesage_cat
20 Youth
22 Youth
25 Youth
27 YoungAdult
21 Youth
23 Youth
37 MiddleAged
31 YoungAdult
61 Senior
45 MiddleAged
41 MiddleAged
32 YoungAdult
In [12]:
df[df$age_cat == "Youth", ]
agesage_cat
120 Youth
222 Youth
325 Youth
521 Youth
623 Youth

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!