【发布时间】:2017-05-11 13:03:29
【问题描述】:
我有一个看起来像这样的数据集:
id eye date notes
1 L 01-01-2000
1 L 01-06-2000
1 R 01-01-2000
1 R 01-03-2000
1 R 01-06-2000
2 L 01-01-2000
2 L 01-04-2000
2 R 01-04-2000
2 R 01-07-2000
2 R 04-09-2001
3 L 01-01-2000
4 L 01-01-2000
4 L 03-03-2001
4 R 03-03-2001
对于每个id,我希望能够找到眼睛标记为 L 和 R 的常见日期,然后将其作为数据框输出。所以它应该是这样的:
id eye date notes
1 L 01-01-2000
1 L 01-06-2000
1 R 01-01-2000
1 R 01-06-2000
2 L 01-04-2000
2 R 01-04-2000
4 L 03-03-2001
4 R 03-03-2001
我一直在尝试 dplyr 和 plyr 的不同变体(下面的示例),但我似乎无法让它做我想做的事。
data %>% group_by(id) %>% do(Reduce(intersect, list(.$date[.$eye == "L"], .$date[.$eye == "R"])))
ddply(data, .(id), summarize, Reduce(intersect, list(.$date[.$eye == "L"], .$date[.$eye == "R"])))
从语义上讲,这两个似乎都“说出”了我想让他们做什么,但我没有得到任何清晰的结果。
有什么想法吗?
【问题讨论】:
-
我已经更新了示例。 L 和 R 的条目不必成对出现。一个可能有很多,另一个可能很少(或没有)。我正在为每个 ID 查找特定日期的所有 L/R 对。我希望这很清楚!