2016-06-16 4 views
2

출력 데이터 프레임의 차원을 변경하지 않고 유지하려는 R에서 집계 함수를 사용하려고합니다. 예를 들어이 전 가격의 합계로 유형과 기능에 통합하여 R에 집계 함수 사용 후 다음과 같은 데이터 프레임데이터 프레임의 차원을 줄이지 않고 집계

Name------Type------ Price 
Prod1-----A--------  $1 
Prod2----A---------  $5 
Prod3----B----------  $7 
Prod4-----B---------  $9 

있다고 가정 해 봅시다. 다음과 같은 결과가 나타납니다.

Type-------Value 
A-----------6 
B-----------16 

그러나 데이터 프레임의 크기를 동일하게 유지하려고합니다. 예 :

Name-----Type----Price----Value 
Prod1----A-------$1-------$6 
Prod2----A-------$5--------$6 
Prod3----B--------$7-------$16 
Prod 4----B-------$9--------$16 

이 응용 프로그램에는 루프를 사용하고 싶지 않습니다. 이 작업을 수행하는 다른 방법을 제안하십시오.

+0

왜 정확히 예상 출력되는 (내 솔루션을 용인되지 않았다 너) 보여 줬어? '$ '기호없이 보여 주었다면, 그렇게했을 것입니다. 너무 많아. – akrun

답변

2

에서 ave을 사용할 수 있습니다

library(data.table) 
setDT(df)[, Value := sum(Price), by = Type] 

# Name Type Price Value 
#1: P1 A  1  6 
#2: P1 A  5  6 
#3: P3 B  7 16 
#4: P4 B  9 16 
5

우리는

library(dplyr) 
df %>% 
    group_by(Type) %>% 
    mutate(Value = sum(Price)) 

또는 data.table를 사용하여, dplyr를 사용 base R

df1$Value <- with(df1, paste0("$", ave(as.numeric(sub("[$]", "", Price)), 
          Type, FUN = sum))) 
df1$Value 
#[1] "$6" "$6" "$16" "$16"