我有以下数据
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
答案 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)