R中有序发生的计算
我有一个数据集,其中包括: 客人id客人 入住日期 100个其他变量我宁愿保持不变 我一直在计算客人在以下酒店的总入住次数: 数据对于plyr,我们可以使用顺时针而不是长度 还是和rowid在一起 数据 使用plyr,我们可以使用顺时针而不是长度 还是和rowid在一起 数据 看看函数: 看看函数: 我们可以使用“匹配”和“唯一”来计算入住次数 另一种方法是将因子转换为整数R中有序发生的计算,r,R,我有一个数据集,其中包括: 客人id客人 入住日期 100个其他变量我宁愿保持不变 我一直在计算客人在以下酒店的总入住次数: 数据对于plyr,我们可以使用顺时针而不是长度 还是和rowid在一起 数据 使用plyr,我们可以使用顺时针而不是长度 还是和rowid在一起 数据 看看函数: 看看函数: 我们可以使用“匹配”和“唯一”来计算入住次数 另一种方法是将因子转换为整数 data %>% group_by(guest) %>% mutate(stays = as.intege
data %>% group_by(guest) %>% mutate(stays = as.integer(factor(checkInDate)))
基准R:
data$stays <- with(data, ave(checkInDate, guest, FUN = function(x)
as.integer(factor(x))))
我们可以使用“匹配”和“唯一”来计算入住次数
另一种方法是将因子转换为整数
data %>% group_by(guest) %>% mutate(stays = as.integer(factor(checkInDate)))
基准R:
data$stays <- with(data, ave(checkInDate, guest, FUN = function(x)
as.integer(factor(x))))
@我加了一句this@akrun我已经添加了这个我应该添加的是,数据目前没有按任何东西排序,所以我不确定方法1或2是否有效。对于rowid方法,我在as.IDatecheckInDate中得到错误:尽管数据$checkInDate是一个东西,但找不到对象“checkInDate”。@Adam是的,这就是我将行号与as.DatecheckInDate一起使用的原因order@Adam抱歉,错误是因为我忘记添加setDT以转换为data.table。Updated@Adam更新了plyr方法。此外,我还应该补充一点,数据目前没有按任何方式排序,所以我不确定方法一或两是否有效。对于rowid方法,我在as.IDatecheckInDate中得到错误:尽管数据$checkInDate是一个东西,但找不到对象“checkInDate”。@Adam是的,这就是我将行号与as.DatecheckInDate一起使用的原因order@Adam抱歉,错误是因为我忘记添加setDT以转换为data.table。Updated@Adam更新了plyr方法。也
data <- structure(list(checkInDate = c("2020-02-01", "2020-03-01", "2020-04-01",
"2020-02-01", "2020-03-01", "2020-02-01", "2019-02-01"), guest = c("longstring1",
"longstring1", "longstring1", "longstring2", "longstring2", "longstring3",
"longstring4")), row.names = c(NA, -7L), class = "data.frame")
library(plyr)
data <- data.frame(
guest = sample(1:10, 100, replace = T)
)
ddply(data, .(guest), transform, Stays = order(guest))
library(dplyr)
data %>%
group_by(guest) %>%
mutate(stays = match(checkInDate, unique(checkInDate)))
# checkInDate guest stays
# <chr> <chr> <int>
#1 2020-02-01 longstring1 1
#2 2020-03-01 longstring1 2
#3 2020-04-01 longstring1 3
#4 2020-02-01 longstring2 1
#5 2020-03-01 longstring2 2
#6 2020-02-01 longstring3 1
#7 2019-02-01 longstring4 1
data$stays <- with(data, ave(checkInDate, guest, FUN = function(x)
match(x, unique(x))))
library(data.table)
setDT(data)[, stays := match(checkInDate, unique(checkInDate)), guest]
data %>% group_by(guest) %>% mutate(stays = as.integer(factor(checkInDate)))
data$stays <- with(data, ave(checkInDate, guest, FUN = function(x)
as.integer(factor(x))))
setDT(data)[, stays := as.integer(factor(checkInDate)), guest]