【发布时间】:2022-07-11 20:44:59
【问题描述】:
我目前在一家荷兰足球俱乐部工作,在获取某些球迷的关系长度时遇到了一些问题。在下面的图片中,简要概述了一位球迷及其随时间购买的季票。 membershipJoinDate 表示粉丝加入俱乐部的时间,但是在计算忠诚度时,会使用加入日期和结束日期之间的差值,使用以下代码:
dfmembership_season1$Loyalty_days <- difftime(dfmembership_season1$MembershipEndDate ,dfmembership_season1$MembershipJoinDate , units = c("days"))
dfmembership_season1$Loyalty_years <- interval(dfmembership_season1$MembershipJoinDate, dfmembership_season1$MembershipEndDate) %>%
as.period() %>%
year()
我根据他购买的产品来建立粉丝的忠诚度。但是我想计算这个变量中的整体忠诚度,从他成为俱乐部成员的第一个日期开始。我尝试了以下方法:
dfmembership1$loyalty_year <- dfmembership1 %>%
group_by(GroupID) %>%
mutate(loyalty_year = MembershipEndDate - MembershipJoinDate, default = first(MembershipJoinDate), order_by = GroupID)
但我得到了错误:
mutate() 中的错误:
!计算 loyalty_year = MembershipEndDate - MembershipJoinDate 时出现问题。
ℹ 组 1 出现错误:GroupID = 302339。
由MembershipEndDate - MembershipJoinDate 中的错误引起:
!二元运算符的非数字参数
运行rlang::last_error() 看看哪里出错了。
有人有解决办法吗?
对于 dput() 数据来重建数据集: 结构(列表(MembershipType = c(“Seizoenkaart”,“Seizoenkaart”, “Seizoenkaart”,“Seizoenkaart”,“Seizoenkaart”,“Seizoenkaart”, “Seizoenkaart”,“Seizoenkaart”,“Seizoenkaart”,“Seizoenkaart”, “Seizoenkaart”,“Seizoenkaart”,“Seizoenkaart”,“Seizoenkaart” ), 交易价格 = c(0, 211, 206, 0, 0, 0, 209, 0, 0, 219, 206, 211, 214, 209), MembershipJoinDate = structure(c(17348, 16983、16252、18078、18078、17713、16252、17713、17348、18078、 16252, 17348, 17713, 16252), class= "日期"), MembershipEndDate = structure(c(18443, 17347、17347、18808、18808、18443、17347、18443、18443、18808、 17347, 18443, 18443, 17347), class= "日期"), GroupID = c(100041615L, 100041615L, 100041615L, 100041615L, 100041615L, 100041615L, 100041615L, 100041615L, 100041615L, 100041615L, 100041615L, 100041615L, 100041615L, 100041615L), Loyalty_days = 结构(c(1095, 364, 1095, 730, 730, 730, 1095, 730, 1095, 730, 1095, 1095, 730, 1095), class= "difftime", 单位 = "days"), Loyalty_years = c(3, 1, 3, 2, 2, 2, 3, 2, 3, 2, 3, 3, 2, 3)), row.names = c(25162L, 25163L, 25164L, 25165L, 25166L, 25167L、25168L、25169L、25170L、25171L、25172L、25173L、25174L、 25733L), class= "data.frame")
【问题讨论】:
-
你能提供一些使用
dput()的示例数据吗?这样会更容易为您提供帮助。 -
刚刚做到了!对不起,我是堆栈溢出的新手。
-
顺便修复了错误,通过:dfmembership2$MembershipJoinYear
-
只用年份制作变量,使它们成为数字,但是忠诚度变量还不是正确的,有负的忠诚度分数,这是错误的..知道怎么做吗?
-
太棒了。检查我的答案,看看我是否正确理解了你的问题。否则,请提供此数据样本的预期输出
标签: r