【发布时间】:2016-07-13 06:24:15
【问题描述】:
我有一个 data.table ,其中我的客户很少,有一些 day value 和 pay_day value 。 pay_day 是每个客户的长度为 5 的向量,它由日期值组成
我想用 pay_day 向量检查每一天的值是否是 pay_day 的一部分
这是一个虚拟数据(请原谅创建数据的混乱方式)无法想到更好的方法 atm
customers <- c("179288" ,"146506" ,"202287","16207","152979","14421","41395","199103","183467","151902")
mdays <- 1:31
set.seed(1)
data <- sort(rep(customers,100))
days <- sample(mdays,1000,replace=T)
xyz <- cbind(data,days)
x <- vector(length=1000L)
j <- 1
for( i in 1:10){
set.seed(i) ## I wanted diff dates to be picked
m <- sample(mdays,5)
while(j <=100*i){
x[j] <- paste(m,collapse = ",")
j <- j+1
}
}
xyz <- cbind(xyz,x)
require(data.table)
my_data <- setDT(as.data.frame(xyz))
setnames(my_data, c("cust","days","pay_days"))
my_data[,pay:=runif(1000,min = 0,max=10000)]
现在我想为每个cust 提供pays 的向量,它发生在pay_days。
我尝试了各种方法,但似乎无法弄清楚,我最初的想法是创建一个标志,如果 days 是 pay_days 的子集,然后根据标志收取工资
my_data[,ifelse(grepl(days,pay_days),1,0),cust]
这不像我期望的那样工作。我不想使用原生循环作为
实际数据非常庞大。
【问题讨论】:
-
Error in x[j] <- paste(m, collapse = ",") : object 'x' not found -
哎呀我忘了添加
x
标签: r data.table