2017-09-13 9 views
0

私は2つのデータフレーム間で条件付き合計を行うのに苦労しています。データを再作成しようとしました。実際の作業の問題で再現しました。Excelのさまざまなワークシート間で非常にシンプルなものを実行する必要があります。私は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(クライアントID)%>%summarize_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'からのすべての列を要約します。後者の場合は、最初の行でクライアントを選択し、3行目で必要な列を選択します –

関連する問題