2016-07-14 1 views
1

장시간 독자와 첫 번째 포스터, 이것이 어떻게 진행되는지 봅시다.R의 인수를 기반으로 한 열의 값을 여러 열로 분할하는 방법은 무엇입니까?

저는 다양한 의료 제공자를 기반으로 한 다양한 의약품에 대한 평균 외상 비용 요약을 작성하기 위해 연구 중입니다. 데이터에는 제품 (4)보다 많은 회사 (~ 5000)가 있습니다. 아래와 같이 나는 제품 및 건강 관리 제공자에 의해 포켓 비용 아웃을 집계하여 시작 해야할지 :

결과 데이터 프레임은 다음과 같습니다
avgdf <- aggregate(price ~ company + product, data= df, mean) 
colnames(avgdf) <- c("company", "prod", "avg_price") 

: (I 실제 데이터를 게시하지만 가질 수 없습니다 기밀을 이유로 주 I는 prod 열 4 열, 각각의 제품마다 하나씩으로 분리 될 수 있도록 상기 데이터 프레임을 변형하려는 이들 4 열의 값에 따라 채워)

company prod avg_price 
A  1  88 
A  2  63 
A  3  46 
B  1  55 
C  2  8 
D  1  67 
D  2  42 
D  3  40 
D  4  61 
E  1  13 
E  2  17 
F  1  85 
F  4  17 

을 일반적인 예를 도시하는 그것의 회사 제품 쌍에. 즉, 나는 테이블은 다음과 같이 할 :

company prod1.avg_price prod2.avg_price prod3.avg_price prod4.avg_price 
A  88    63    46    NA 
B  55    NA    NA    NA 
C  NA    2    NA    NA 
D  67    42    40    61 
E  13    17    NA    NA 
F  85    NA    NA    17 

내 예에 있기 때문에 내 데이터 세트에서 많은 NA의가 없어야합니다,하지만 난 그것을 처리 할 수있는 솔루션을 원한다. 내 생각 엔 reshape2meltdcast 함수를 사용하지만이를 구현하는 방법을 잘 모르겠습니다. 도와 주셔서 미리 감사드립니다!

+0

'avgdf %> % (= paste0 자극 ('자극'자극 '.avg_price')) %> % 확산 (자극, avg_price)를 돌연변이' – alistaire

답변

1

data.table에서 dcast을 사용하면 '와이드'형식으로 바꿀 수 있습니다.

dplyr tidyr과 함께
library(data.table) 
dcast(setDT(avgdf), company~paste0("prod", prod, ".avg_price"), value.var = "avg_price") 
# company prod1.avg_price prod2.avg_price prod3.avg_price prod4.avg_price 
#1:  A    88    63    46    NA 
#2:  B    55    NA    NA    NA 
#3:  C    NA    8    NA    NA 
#4:  D    67    42    40    61 
#5:  E    13    17    NA    NA 
#6:  F    85    NA    NA    17 
관련 문제