2017-09-13 3 views
0

두 데이터 프레임간에 조건부 합계를 수행하는 데 어려움을 겪고 있습니다. 필자는 실제 작업 문제로 데이터를 다시 만들려고 했으므로 이제는 Excel의 다른 워크 시트간에 매우 간단한 sumif를 실행해야합니다. 나는 R에 초보자입니다, 그래서 어떤 도움을 많이 주시면 감사하겠습니다!다른 데이터 프레임에서 R에 해당하는 SUMIFS

x1 <- data.frame("ClientID" = c("75","85","95", "75","85","95", "75","85","95"), "Jan2014" = c(80.25, 96.47, 94.44, 85.29, 97.66, 82.33, 35.44, 55.56, 88.88), "Feb2014" = c(90.25, 46.44, 54.54, 86.29, 87.66, 52.33, 55.44, 44.56, 78.87)) 
column.names <- c("ClientID", "Jan2014", "Feb2014")   
ClientID <- x1$ClientID 
ClientID <- unique(ClientID) 
rows.no <- length(ClientID) 
column.no <- length(column.names) 
x2 <- data.frame(matrix(nrow=rows.no, ncol = column.no)) 
colnames(x2) <- column.names 
x2$ClientID <- ClientID 

#I want to have the totals for each of the Jan2014 and Feb2014 columsn at the x2 data table, based on the x1 table (sumifs equivalent) 

x2$Jan2014 <- 
x2$Feb2014 <- 
+1

그냥'라이브러리 (dplyr를) 할을, X1 %> % GROUP_BY (ClientID) %> % summarise_all (합계)'또는 '집계 (. ~ ClientID, df1, sum)' – akrun

답변

2

당신은이 방법으로 수행 할 수 있습니다 더 일반적으로

library(dplyr) 
x1 %>% group_by(ClientID) %>% summarize_all(sum) 

# # A tibble: 3 x 3 
# ClientID Jan2014 Feb2014 
# <fctr> <dbl> <dbl> 
# 1  75 200.98 231.98 
# 2  85 249.69 178.66 
# 3  95 265.65 185.74 

또는 (그러나 여기 같은 결과)

x1 %>% filter(ClientID %in% c(75,85,95)) %>% 
    group_by(ClientID) %>% 
    select(Jan2014,Feb2014) %>% 
    summarize_all(sum) 
+0

고마워요! x1 데이터 프레임과 x1 데이터 프레임과 다른 수의 열 (및 다른 열 이름)이 있으면 솔루션이 크게 달라 집니까? – dmel2017

+0

첫 번째 경우에는 모든 클라이언트에 대해'x1'의 모든 열을 요약하고, 두 번째 경우에는 첫 번째 줄에서 클라이언트를 선택하고 세 번째 줄에서 필요한 열을 선택하십시오 –

관련 문제