더북(TheBook)

transform()

base::transform( )2은 연산 결과를 데이터 프레임의 새로운 컬럼에 저장하는 함수다.

이를 사용해 baseball 데이터에 각 행이 선수의 몇 년차 통계인지를 뜻하는 cyear 컬럼을 추가해보자. 다음 코드는 데이터를 선수 id로 분할하여 그룹 지은 뒤, 각 그룹에서 year의 최솟값과 현재 행의 year 값의 차이를 cyear에 저장한다.

> head(ddply(baseball, .(id), transform, cyear=year - min(year) + 1))
         id year stint team lg   g  ab   r   h X2b X3b hr rbi sb cs bb so ibb hbp sh sf gidp cyear
1 aaronha01 1954     1  ML1 NL 122 468  58 131  27   6 13  69  2  2 28 39  NA   3  6  4   13     1
2 aaronha01 1955     1  ML1 NL 153 602 105 189  37   9 27 106  3  1 49 61   5   3  7  4   20     2
3 aaronha01 1956     1  ML1 NL 153 609 106 200  34  14 26  92  2  4 37 54   6   2  5  7   21     3
4 aaronha01 1957     1  ML1 NL 151 615 118 198  27   6 44 132  1  1 57 58  15   0  0  3   13     4
5 aaronha01 1958     1  ML1 NL 153 601 109 196  34   4 30  95  4  1 59 49  16   1  0  3   21     5
6 aaronha01 1959     1  ML1 NL 154 629 116 223  46   7 39 123  8  0 51 54  17   4  0  9   19     6

2 base::transform 형태의 표현은 base 패키지에 있는 transform( ) 함수를 의미한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.