首页 > 解决方案 > 如何在 R 中复制 Excel 的 COUNTIF?

问题描述

如何在 R 中编写下面的 Excel 代码?

COUNTIF($A$4:A4,A4) 

我有 > 100k 行数据,我想在其中获取COUNTIF($A$4:A4,A4) = 1值。我可以在 Excel 中做到这一点,但是,我在 R 中遇到问题

Date            Worker ID

10/31/2017     3152
9/30/2017      3152
8/31/2017      3152
7/31/2017      3152
6/30/2017      3152
5/31/2017      3152
4/30/2017      3152
3/31/2017      3152
2/28/2017      3153
1/31/2017      3153
12/31/2016     3153
11/30/2016     3153
10/31/2017     3153
9/30/2017      3153
8/31/2017      3153
7/31/2017      3153
6/30/2017      3153
5/31/2017      3940
4/30/2017      3940
3/31/2017      3940
2/28/2017      3940
1/31/2017      3940

我有相同的数据集,有 25 列,每行都有不同的数据集,但最新/最后日期有更新信息。我想选择员工的最新日期行。

标签: rdataframeexcel-formula

解决方案


您可以使用数据框子集和duplicated函数来模仿 Excel 的COUNTIF. 请看下面的代码:

df <- structure(list(Date = structure(c(2L, 12L, 11L, 10L, 9L, 8L, 
7L, 6L, 5L, 1L, 4L, 3L, 2L, 12L, 11L, 10L, 9L, 8L, 7L, 6L, 5L, 
1L), .Label = c("1/31/2017", "10/31/2017", "11/30/2016", "12/31/2016", 
"2/28/2017", "3/31/2017", "4/30/2017", "5/31/2017", "6/30/2017", 
"7/31/2017", "8/31/2017", "9/30/2017"), class = "factor"), Worker_ID = c(3152L, 
3152L, 3152L, 3152L, 3152L, 3152L, 3152L, 3152L, 3153L, 3153L, 
3153L, 3153L, 3153L, 3153L, 3153L, 3153L, 3153L, 3940L, 3940L, 
3940L, 3940L, 3940L)), class = "data.frame", row.names = c(NA, 
-22L))


df[!duplicated(df$Worker_ID), ]

输出:

         Date Worker_ID
1  10/31/2017      3152
9   2/28/2017      3153
18  5/31/2017      3940

推荐阅读