2016-07-06 3 views
1

현재 작업중인 구체적인 데이터는 없지만이 문제에 대해 궁금합니다.이렇게 데이터 프레임을 정리하는 방법이 있습니까?

것은의 내 dataframe은 다음과 같습니다 가정 해 봅시다 :

Name     Number     Sum 
What (feat.Drake)  1A      300 
What (I Remix)   1B      400 

그래서, 내가 뭘하려고하는 번호에 의해 합계 요약 할 수있다 :이로 바뀝니다

Name     Number     Sum 
What (feat.Drake)  1A      100 
What     1A      100 
What (Radio Edit)  1A      100 
What (I Remix)   1B      200 
What (Remastered)  1B      200 

. 그러나 이름을 제거 할 수 없으므로 데이터 프레임에 표시된 첫 번째 이름을 유지했습니다.

모든 종류의 도움을 주실 수 있습니다!

답변

1

우리는 여기에 dplyr

library(dplyr) 
df1 %>% 
    group_by(Number) %>% 
    summarise(Name = first(Name), Sum = sum(Sum))  
# Number    Name Sum  
# <chr>    <chr> <int> 
#1  1A What (feat.Drake) 300 
#2  1B What (I Remix) 400 
+1

아, 놀랍습니다. –

0

을 사용하여 기본 R 방법입니다 수 있습니다. 그것은 조금 더 장황하지만 작동합니다

평소처럼
cbind("Name"=df$Name[!duplicated(df$Number)], aggregate(Sum ~ Number, data=df, sum)) 
       name Number Sum 
1 What_(feat.Drake)  1A 300 
2 What_(I_Remix)  1B 400 

, aggregate는 그룹 합계를 가져옵니다. 그룹 별 이름은 duplicated으로 식별되며 하위 집합 [을 사용하여 추출됩니다. 이 결과는 cbind과 결합됩니다. 마지막으로, 이름 변수 이름을 cbind 내에 다시 추가했습니다.

관련 문제