在R中为两个数据帧使用Countifs函数

时间:2018-07-24 02:40:21

标签: r

我试图通过比较两个数据帧并从符合条件的其他数据帧中获取行数来在excel中复制COUNTIFS函数。

因此,这是我正在尝试做的一个示例:

First DataFrame :
df <- data.frame(Amount = c (1000, 1500, 2000, 3000, 4000),
                 count = c(1, 1, 3, 2, 1))
df <- df[order(df$count, df$Amount),]
df

  Amount count
1   1000     1
2   1500     1
5   4000     1
4   3000     2
3   2000     3

Second DataFrame: 
Table1 <- data.frame(Amt = c(1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000),
                    Cnt = c(1, 2, 2, 1, 3, 1, 1, 3, 1))
Table1

   Amt Cnt
1 1000   1
2 1500   2
3 2000   2
4 2500   1
5 3000   3
6 3500   1
7 4000   1
8 4500   3
9 5000   1

我想做的是创建第三列,用> =来计数来自Table1的警报的数量,这些警报同时满足df中的两个条件。

这是理想的结果:

Amount  count   Countifs
1000    1   9
1500    1   8
4000    1   3
3000    2   2
2000    3   2

它计算表1中的行数> =数量并以df为单位。

Excel中的公式,其中F和G列为Table1,A和B列为df

=COUNTIFS($F$2:$F$10,">="&$A2,$G$2:$G$10,">="&$B2)

这些是我尝试过的以前的代码

1. sum(rowSums(df$Amount >= Table1$Amt & df$count >= Table1$Cnt))
2. df$X <- length(which(df$Amount >= Amt & df$count >= Cnt))
3. library(dplyr)
   df %>%
   group_by(Amount, count) %>%
   count(Amount >= Table1$Amt,
        Count >= Table1$Cnt)

0 个答案:

没有答案