2014-12-10 4 views
1

에 data.frame의 열을 확대 내가 행을 줄이고 R

> a <- data.frame(year = c(2001,2001,2001,2001), country = c("Japan", "Japan","US","US"), type = c("a","b","a","b"), amount = c(35,67,39,45)) 
> a 
    year country type amount 
1 2001 Japan a  35 
2 2001 Japan b  67 
3 2001  US a  39 
4 2001  US b  45 

R.

이 data.frame이 어떻게이처럼 보이는 data.frame으로이 변환해야합니까?
year country type.a type.b 
1 2001 Japan  35  67 
2 2001  US  39  45 

기본적으로 내가 행의 수 (년 X 국가) 쌍의 수가되고 싶어요, 나는 각 유형에 대한 추가 열을 만들려고합니다.

답변

2

기반 솔루션,하지만 열과 행

reshape(a, v.names="amount", timevar="type", idvar="country", direction="wide") 
    year country amount.a amount.b 
1 2001 Japan  35  67 
3 2001  US  39  45 

reshape2 솔루션의 이름을 변경해야합니다

library(reshape2) 
dcast(a, year+country ~ paste("type", type, sep="."), value.var="amount") 

    year country type.a type.b 
1 2001 Japan  35  67 
2 2001  US  39  45 
1

또 다른 방법은 예상 제공하기 위해 dplyr 패키지의 tidyr 패키지와 renamespread을 사용하는 것입니다 결과.

library(dplyr) 
library(tidyr) 

spread(a,type, amount) %>% 
rename(type.a = a, type.b = b) 

# year country type.a type.b 
#1 2001 Japan  35  67 
#2 2001  US  39  45 
관련 문제