使用R将2个结果向量合并为1个数据帧

时间:2015-08-12 20:33:17

标签: r merge dataframe dplyr

我有这样的df

Month <- c('JAN','JAN','JAN','JAN','FEB','FEB','MAR','APR','MAY','MAY') 
Category <- c('A','A','B','C','A','E','B','D','E','F')
Year <- c(2014,2015,2015,2015,2014,2013,2015,2014,2015,2013)
Number_Combinations <- c(3,2,3,4,1,3,6,5,1,1)
df <- data.frame(Month ,Category,Year,Number_Combinations)
df

  Month Category Year Number_Combinations
1  JAN        A 2014                   3
2  JAN        A 2015                   2
3  JAN        B 2015                   3
4  JAN        C 2015                   4
5  FEB        A 2014                   1
6  FEB        E 2013                   3
7  MAR        B 2015                   6
8  APR        D 2014                   5
9  MAY        E 2015                   1
10 MAY        F 2013                   1

我从上面的数据框中得到了另一个带有条件

的df
df1 <- subset(df,Number_Combinations > 2)
df1

  Month Category Year Number_Combinations
1  JAN        A 2014                   3
3  JAN        B 2015                   3
4  JAN        C 2015                   4
6  FEB        E 2013                   3
7  MAR        B 2015                   6
8  APR        D 2014                   5

现在我要创建一个报告月份的表格,以df为单位的月份总行数以及df1中月份的总数

所需的输出

  Month Number_Month_df Number_Month_df1
1   JAN               4                3
2   FEB               2                1
3   MAR               1                1
4   APR               1                1
5   MAY               2                0

虽然我使用table(df)table(df1)并尝试合并但未获得所需的结果。有人可以帮助我获取上述数据框吗?

2 个答案:

答案 0 :(得分:1)

res <- data.frame(Number_Month_df=sort(table(df$Month),T),
                  Number_Month_df1=sort(table(df1$Month),T))
res$Month <- rownames(res)

答案 1 :(得分:1)

我们从'df'和'df1'获得'Month'列的table,转换为'data.frame'(as.data.frame),merge由' Var1',并相应地更改列名。

 res <- merge(as.data.frame(table(df$Month)), 
             as.data.frame(table(df1$Month)), by='Var1')
 colnames(res) <- c('Month', 'Number_Month_df', 'Number_Month_df1')