Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较R中不同行中的不同列_R_Rows_Col - Fatal编程技术网

比较R中不同行中的不同列

比较R中不同行中的不同列,r,rows,col,R,Rows,Col,我想检查一下个人的资格状况是否有任何差距。我将间隔定义为在最后一个elig_结束日期后30天发生的索赔日期。因此,我想做的是检查索赔的每个日期不超过紧接前一行的elig_end_日期+30天。理想情况下,我希望有一个指标,表明0表示没有差距,1表示每人有差距以及差距出现的地方。下面是一个示例df,其中解决方案内置为“间隙” names date_of_claim elig_end_date obs gaps 1 tom 2010-01-01 2010-07-01 1

我想检查一下个人的资格状况是否有任何差距。我将间隔定义为在最后一个elig_结束日期后30天发生的索赔日期。因此,我想做的是检查索赔的每个日期不超过紧接前一行的elig_end_日期+30天。理想情况下,我希望有一个指标,表明0表示没有差距,1表示每人有差距以及差距出现的地方。下面是一个示例df,其中解决方案内置为“间隙”

 names date_of_claim elig_end_date obs gaps
1    tom    2010-01-01    2010-07-01   1    NA
2    tom    2010-05-04    2010-07-01   1    0
3    tom    2010-06-01    2014-01-01   2    0
4    tom    2010-10-10    2014-01-01   2    0
5   mary    2010-03-01    2014-06-14   1    NA
6   mary    2010-05-01    2014-06-14   1    0
7   mary    2010-08-01    2014-06-14   1    0
8   mary    2010-11-01    2014-06-14   1    0
9   mary    2011-01-01    2014-06-14   1    0
10  john    2010-03-27    2011-03-01   1    NA
11  john    2010-07-01    2011-03-01   1    0
12  john    2010-11-01    2011-03-01   1    0
13  john    2011-02-01    2011-03-01   1    0
14   sue    2010-02-01    2010-04-30   1    NA
15   sue    2010-02-27    2010-04-30   1    0
16   sue    2010-03-13    2010-05-31   2    0
17   sue    2010-04-27    2010-06-30   3    0
18   sue    2010-04-27    2010-06-30   3    0
19   sue    2010-05-06    2010-08-31   4    0
20   sue    2010-06-08    2010-09-30   5    0
21  mike    2010-05-01    2010-07-30   1    NA
22  mike    2010-06-01    2010-07-30   1    0
23  mike    2010-11-12    2011-07-30   2    1
我发现这篇文章非常有用,但我觉得我不能使用循环,因为我的df有400万行,而且我已经很难在上面运行循环了

为此,我认为我需要的代码如下:

df$gaps<-ifelse(df$date_of_claim>=df$elig_end_date+30,1,0)  ##this doesn't use the preceeding row.
df$gaps=df$elig_end_date+30,1,0)35;#这不使用前面的行。
我用这个做了一次笨拙的尝试:

df$gaps<-df$date_of_claim>=df$elig_end_date[-1,]
df$gaps=df$elig\u end\u日期[-1,]
但是我得到一个错误,说我有一个不正确的维数


非常感谢大家的帮助!多谢各位

对于400万次观察,我将使用数据。表:

DF <- read.table(text="names date_of_claim elig_end_date obs gaps
1    tom    2010-01-01    2010-07-01   1    NA
2    tom    2010-05-04    2010-07-01   1    0
3    tom    2010-06-01    2014-01-01   2    0
4    tom    2010-10-10    2014-01-01   2    0
5   mary    2010-03-01    2014-06-14   1    NA
6   mary    2010-05-01    2014-06-14   1    0
7   mary    2010-08-01    2014-06-14   1    0
8   mary    2010-11-01    2014-06-14   1    0
9   mary    2011-01-01    2014-06-14   1    0
10  john    2010-03-27    2011-03-01   1    NA
11  john    2010-07-01    2011-03-01   1    0
12  john    2010-11-01    2011-03-01   1    0
13  john    2011-02-01    2011-03-01   1    0
14   sue    2010-02-01    2010-04-30   1    NA
15   sue    2010-02-27    2010-04-30   1    0
16   sue    2010-03-13    2010-05-31   2    0
17   sue    2010-04-27    2010-06-30   3    0
18   sue    2010-04-27    2010-06-30   3    0
19   sue    2010-05-06    2010-08-31   4    0
20   sue    2010-06-08    2010-09-30   5    0
21  mike    2010-05-01    2010-07-30   1    NA
22  mike    2010-06-01    2010-07-30   1    0
23  mike    2010-11-12    2011-07-30   2    1", header=TRUE)

library(data.table)
DT <- data.table(DF)

DT[, c("date_of_claim", "elig_end_date") := list(as.Date(date_of_claim), as.Date(elig_end_date))]

DT[, gaps2:= c(NA, date_of_claim[-1] > head(elig_end_date, -1)+30), by=names]

#    names date_of_claim elig_end_date obs gaps gaps2
# 1:   tom    2010-01-01    2010-07-01   1   NA    NA
# 2:   tom    2010-05-04    2010-07-01   1    0 FALSE
# 3:   tom    2010-06-01    2014-01-01   2    0 FALSE
# 4:   tom    2010-10-10    2014-01-01   2    0 FALSE
# 5:  mary    2010-03-01    2014-06-14   1   NA    NA
# 6:  mary    2010-05-01    2014-06-14   1    0 FALSE
# 7:  mary    2010-08-01    2014-06-14   1    0 FALSE
# 8:  mary    2010-11-01    2014-06-14   1    0 FALSE
# 9:  mary    2011-01-01    2014-06-14   1    0 FALSE
# 10:  john    2010-03-27    2011-03-01   1   NA    NA
# 11:  john    2010-07-01    2011-03-01   1    0 FALSE
# 12:  john    2010-11-01    2011-03-01   1    0 FALSE
# 13:  john    2011-02-01    2011-03-01   1    0 FALSE
# 14:   sue    2010-02-01    2010-04-30   1   NA    NA
# 15:   sue    2010-02-27    2010-04-30   1    0 FALSE
# 16:   sue    2010-03-13    2010-05-31   2    0 FALSE
# 17:   sue    2010-04-27    2010-06-30   3    0 FALSE
# 18:   sue    2010-04-27    2010-06-30   3    0 FALSE
# 19:   sue    2010-05-06    2010-08-31   4    0 FALSE
# 20:   sue    2010-06-08    2010-09-30   5    0 FALSE
# 21:  mike    2010-05-01    2010-07-30   1   NA    NA
# 22:  mike    2010-06-01    2010-07-30   1    0 FALSE
# 23:  mike    2010-11-12    2011-07-30   2    1  TRUE
#     names date_of_claim elig_end_date obs gaps gaps2
DF