[英]How to calculate the number of times a value occurs for different unique IDs in R?
[英]How to count unique IDs at different dates in R?
我是 R 的初學者,所以如果問題看起來很愚蠢或者有明顯的解決方案,或者已經在其他地方解決了,我提前道歉......
我有一個包含購買日期和客戶 ID 的 df :
ANNEE Date clientID
1 2017 2017-01 aaa
2 2017 2017-01 bbb
3 2018 2018-01 aaa
4 2018 2018-02 aaa
5 2018 2018-01 bbb
6 2019 2019-01 aaa
7 2019 2019-01 ccc
8 2020 2020-01 ddd
9 2020 2020-01 ccc
我想知道每年我的客戶中有多少百分比在前一年出現在我的 df 中。 在這個例子中,它看起來像:
dfObjective
Date Prop
2017 0
2018 1
2019 0.5
2020 0.5
我認為第一步是重新安排我的 df 以計算給定年份中存在的客戶數量,無論他們購買了多少,並且我已經做到了(盡管我確信有更好的方法來做到這一點) )
library(plyr)
clients = ddply(df, "ANNEE", summarise, Count = length(unique(ClientID)))
df2
ANNEE Count
2017 2
2018 2
2019 2
2020 2
但是我找不到如何計算上一年已經至少購買一次的客戶比例......
先感謝您 !
這是一個tidyverse
解決方案。
首先,按clientId
分組以確定哪些客戶在上一年。 然后,按年份分組以找到比例。
library(tidyverse)
df <- read_table2("
ANNEE Date clientID
2017 2017-01 aaa
2017 2017-01 bbb
2018 2018-01 aaa
2018 2018-02 aaa
2018 2018-01 bbb
2019 2019-01 aaa
2019 2019-01 ccc
2020 2020-01 ddd
2020 2020-01 ccc
")
df %>%
distinct(clientID, ANNEE) %>%
group_by(clientID) %>%
mutate(in_previous_year = (ANNEE - 1) %in% ANNEE) %>%
group_by(ANNEE) %>%
summarise(Prop = sum(in_previous_year) / n())
#> # A tibble: 4 x 2
#> ANNEE Prop
#> <dbl> <dbl>
#> 1 2017 0
#> 2 2018 1
#> 3 2019 0.5
#> 4 2020 0.5
基礎 R :
data.frame(ANNEE = unique(df$ANNEE), prop =
rowMeans(apply(do.call(
rbind, lapply(with(df[order(df$ANNEE), ],
split(clientID, ANNEE)),
unique)
), 2, duplicated)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.