簡體   English   中英

每個用戶ID的匹配觀察日期並給出匹配分數R

[英]matching observation dates per user ID and giving a matching score R

我有一個數據如下所示的數據框“ ds”,我正在嘗試按用戶為用戶計算“日期”列中的匹配項

user_id  observation       date
1           efd         2005-01-11
1           vev4        2005-01-10
1           23e         2005-01-10
1           rvw         2005-01-11
2           3dfv        2005-01-08
2           cfv         2005-01-08
2           dfv         2005-01-11
2           rvw         2005-02-11
2           rvw         2005-02-17
2           rvw         2005-02-21
3           rvw         2005-02-24
3           rvw         2005-03-09
3           efd         2005-03-25
4           23e         2005-03-12
4           23e         2005-03-12
5           23e         2005-03-15
6           efd         2005-03-16
6           23e         2005-03-16
6           23e         2005-03-18
7           3dfv        2005-03-24
7           rvw         2005-03-24
7           3dfv        2005-03-22
7           3dfv        2005-03-23

所以所需的結果將是這樣的:

user_id observation         date    Match_num
1           efd         2005-01-11      2
1           vev4        2005-01-10  
1           23e         2005-01-10  
1           rvw         2005-01-11  
2           3dfv        2005-01-08      2
2           cfv         2005-01-08  
2           dfv         2005-01-11  
2           rvw         2005-02-11  
2           rvw         2005-02-17  
2           rvw         2005-02-21  
3           rvw         2005-02-24      0
3           rvw         2005-03-09  
3           efd         2005-03-25  
4           23e         2005-03-12      1
4           23e         2005-03-12  
5           23e         2005-03-15      0
6           efd         2005-03-16      1
6           23e         2005-03-16  
6           23e         2005-03-18  
7           3dfv        2005-03-24      1
7           rvw         2005-03-24  
7           3dfv        2005-03-22  
7           3dfv        2005-03-23  

我知道如何使用“ ave”計算百分比:

ds $ match_num <-with(ds,ave(date,customer_id,FUN = function(x)c(sum(x)/ length(x),rep(NA,length(x)-1))))

但不適用於匹配日期,我需要計算匹配的確切數目而不是百分比。

您可以嘗試使用data.table (以下內容將完全填寫Match_num列,而不是僅添加幾個值)

library(data.table)
DS <- data.table(ds)
DS[, Match_num := .N, by=list(user_id, date)]

如果OP想要重復的數量

library(data.table)
setDT(ds)[, Match_num:= uniqueN(date[duplicated(date)]) , .(user_id)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM