每月过滤不重复的ID

时间:2019-09-17 15:25:46

标签: r

我有以下数据

id   date        price
1   2017-11-12   110
2   2017-11-10   150
4   2017-11-13   190
1   2017-11-01   120
3   2017-12-12   10
6   2017-12-21   170
6   2017-12-14   180
7   2017-12-12   140

我要提取一个月不重复的ID。输出应为包含非重复ID的数据帧,如下所示

id   date        price
2   2017-11-10   150
4   2017-11-13   190
3   2017-12-12   10
7   2017-12-12   140

1 个答案:

答案 0 :(得分:2)

ave产生一个向量,该向量具有当前行的年/月中当前行的id的数量。我们使用subset来仅保留那些1。不使用任何包。

subset(DF, ave(id, format(date, "%Y-%m"), id, FUN = length) == 1)

这给出了:

  id       date price
2  2 2017-11-10   150
3  4 2017-11-13   190
5  3 2017-12-12    10
8  7 2017-12-12   140

注意

我们假设此输入:

Lines <- "id   date        price
1   2017-11-12   110
2   2017-11-10   150
4   2017-11-13   190
1   2017-11-01   120
3   2017-12-12   10
6   2017-12-21   170
6   2017-12-14   180
7   2017-12-12   140"
DF <- read.table(text = Lines, header = TRUE)
DF$date <- as.Date(DF$date)