2016-10-26 5 views
1

tdt을 수행하는 더 우아한 방법은 다음 예제와 같이 base 또는 data.table 함수와 연산만을 사용하는 것입니까?두 개의 열 데이터 테이블을 한 열의 열 이름과 다른 열의 값을 가진 데이터 테이블로 변환

library(data.table) 
dt <- data.table(a = letters[1:5], b = 1:5) 
dt 
# a b 
# 1: a 1 
# 2: b 2 
# 3: c 3 
# 4: d 4 
# 5: e 5 
tdt <- data.table(t(matrix(dt$b, dimnames = list(dt$a, NULL)))) 
tdt 
# a b c d e 
# 1: 1 2 3 4 5 

답변

1

우리는 dcast

dcast(dt[, rn := 1], rn~a, value.var = "b")[, rn := NULL][] 
# a b c d e 
#1: 1 2 3 4 5 

또는

setDT(setNames(as.list(dt$b), dt$a))[] 
# a b c d e 
#1: 1 2 3 4 5 

또는

dt[, setNames(as.list(b),a)] 
+1

아름다운 사용할 수 있습니다. 감사! –

관련 문제