【发布时间】:2016-10-03 15:07:48
【问题描述】:
我有一个下面给出的数据表以及两个场景的 dput。
DT1:
date item id
1: 2016-09-05 view 1
2: 2016-09-05 view 1
3: 2016-09-05 view 1
4: 2016-09-06 pv 1
5: 2016-09-06 pv 1
6: 2016-09-06 pv 1
7: 2016-09-06 check 1
8: 2016-09-06 check 1
9: 2016-09-06 check 1
10: 2016-09-06 check 1
输入1:
DT = setDT(structure(list(date = structure(c(17049, 17049, 17049, 17050,
17050, 17050, 17050, 17050, 17050, 17050), class = "Date"), item = c("view",
"view", "view", "pv", "pv", "pv", "check", "check", "check",
"check"), id = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), .Names = c("date",
"item", "id"), row.names = c(NA, -10L), class = c("data.table",
"data.frame")))
DT2:
date item id
1: 2016-09-05 view 1
2: 2016-09-05 view 1
3: 2016-09-05 view 1
4: 2016-09-08 pv 1
5: 2016-09-06 pv1 1
6: 2016-09-06 pv2 1
7: 2016-09-06 check 1
8: 2016-09-06 check 1
9: 2016-09-06 check 1
10: 2016-09-06 check 1
输入2:
structure(list(date = structure(c(17049, 17049, 17049, 17050,
17050, 17050, 17050, 17050, 17050, 17050), class = "Date"), item = c("view",
"view", "view", "pv", "pv1", "pv2", "check", "check", "check",
"check"), id = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), .Names = c("date",
"item", "id"), row.names = c(NA, -10L), class = c("data.table",
"data.frame"), .internal.selfref = <pointer: 0x0000000000210788>)
我正在尝试在“项目”列中查找第一次出现 pv 的日期并提取该条目的相应日期,然后通过 id 提取“项目”中第一次出现检查的日期,取天数差异并存储在新变量中。
如果有多个条件需要我们检查“pv”,该怎么办。例如,如果“pv”不在列表中,则可以检查“pv1”或“pv2”。这个想法是第一次出现。因此,如果存在 pv、pv1 和 pv2 但 pv2 先出现,则应采用 pv2 对应的日期。类似地,项目列中可能仅存在“pv2”或“pv1”或“pv”。我们如何执行检查以从三种可能性中取出第一次出现并提取日期。有什么想法吗?
寻找有关使用数据表或%>%的最少代码完成它的想法和建议。
【问题讨论】:
标签: r data.table dplyr transform data-manipulation