더북(TheBook)

cast()

cast( )는 결과로 얻고자 하는 데이터 타입에 따라 dcast( ), acast( )로 구분하여 사용한다. dcast( )는 결과로 데이터 프레임을 반환하며, acast( )는 벡터, 행렬, 배열을 반환한다. 여기서는 앞에서와 마찬가지로 데이터 프레임에 집중하여 dcast( )만 살펴보도록 하겠다.

표 5-9 cast( ) 함수

reshape2::dcast : melt( )된 데이터(molten data)를 측정치를 컬럼으로 나열한 데이터 프레임으로 변환한다.

reshape2::dcast(
  data, # melt()된 데이터
  # 변환 포뮬러
  # 포뮬러를 작성하는 규칙은 다음과 같다.
  # 1) "id 변수 ~ variable 변수" 형태로 적는다.
  # 2) 아무 변수도 지정하지 않으려면 .을 사용한다.
  # 3) formula에 명시적으로 나열되지 않은 모든 변수를 표현하려면 ...을 사용한다.
  formula,
  fun.aggregate=NULL # 데이터 재구성 시 여러 행이 한 셀에 모일 경우 사용할 집합 함수
)

반환 값은 데이터 프레임이다.

다음 코드는 french_fries 데이터를 melt( ) 후 dcast( )를 사용해 다시 원 데이터로 변환하는 예를 보여준다. 코드 마지막에 사용된 함수인 identical( )은 두 데이터가 완전히 동일한 객체인지를 알려주는 함수다. rownames( )에 NULL을 부여한 것은 french_fries에 특이하게 부여된 행 번호(61, 25, 62, … 형태로 행 번호가 부여되어 있음)를 무시하기 위함이다.

> m <- melt(french_fries, id.vars=1:4)
> r <- dcast(m, time + treatment + subject + rep ~ ...)
> rownames(r) <- NULL
> rownames(french_fries) <- NULL
> identical(r, french_fries)
[1] TRUE
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.