【发布时间】:2015-07-27 12:55:04
【问题描述】:
我之前也问过类似的问题(here is the link),这次也想计算一下v区分每天和的次数每个ID,但现在的“区分”不仅意味着一天的v不同,还意味着这一天和前一天的不同v。
例如,如果第二天有v1,而且在前一天,我们不计算第二天的v1。
ID1:
第 1 天:v1/v2 ----->第 1 天为 2
第 2 天:v1/v3 ----->第 2 天为 1
day3: v3 ----->第 3 天为 0
ID2
第 1 天:v4 -----> 第 1 天为 1
第 2 天:v5/v4/v1 ----->第 2 天为 2
第 3 天:v3/v4 ----->第 3 天为 1
这是我的数据:
ID Day v
ID1 1 v1
ID1 1 v1
ID1 1 v2
ID1 2 v1
ID1 2 v3
ID1 3 v3
ID1 3 v3
ID1 3 v3
ID2 1 v4
ID2 2 v5
ID2 2 v5
ID2 2 v4
ID2 2 v1
ID2 3 v3
ID2 3 v4
根据我上面的数据,我想得到如下结果:
ID Day v daily_v_distinguish_ID
ID1 1 v1 2
ID1 1 v1 NA
ID1 1 v2 NA
ID1 2 v1 1
ID1 2 v3 NA
ID1 3 v3 0
ID1 3 v3 NA
ID1 3 v3 NA
ID2 1 v4 1
ID2 2 v5 2
ID2 2 v5 NA
ID2 2 v4 NA
ID2 2 v1 NA
ID2 3 v3 1
ID2 3 v4 NA
如果我们使用setDT(df1)[, daily_v_ID := c(uniqueN(v), rep(NA, .N-1)), by = .(ID, Day)],我们还没有将这一天的v与转发天进行比较。
【问题讨论】:
-
@akrun 我们不对不同的 ID 进行比较。对于 ID2,我们将
v1计算为第 2 天,甚至v1在 ID1 的第 1 天发生。