Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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 - Fatal编程技术网

在R中使用向量方法,根据从其他列派生的周期为列赋值

在R中使用向量方法,根据从其他列派生的周期为列赋值,r,R,我有这样一个df: x <- data.frame("date1" = c("2018-09-12","2018-09-18", "2019-06-23"), "date2" = c("2018-09-10","2018-09-13","2018-12-12")) > x date1 date2 1 2

我有这样一个df:

x <- data.frame("date1" = c("2018-09-12","2018-09-18", "2019-06-23"), "date2" = c("2018-09-10","2018-09-13","2018-12-12"))
> x
       date1      date2
1 2018-09-12 2018-09-10
2 2018-09-18 2018-09-13
3 2019-06-23 2018-12-12
有没有一种方法可以在R中以向量的形式实现呢。 谢谢你能试试这个吗

periods = as.Date(sort(unique(x$date1)))
x$period = apply(as.data.frame(x$date2), 1, function(x){
                findInterval(as.Date(x), periods)
            })
你能试试这个吗

periods = as.Date(sort(unique(x$date1)))
x$period = apply(as.data.frame(x$date2), 1, function(x){
                findInterval(as.Date(x), periods)
            })

您可以使用
date1
中的日期在
date2

findInterval(x$date2, x$date1)
#[1] 0 1 2

您可以使用
date1
中的日期在
date2

findInterval(x$date2, x$date1)
#[1] 0 1 2

期望值是否正确<代码>c(0,未列出)映射(函数(u,v)和(x$date2>=u&x$date2@akrun我给出了预期值只是为了给出一个想法。基本上,我必须在该列上做一个“唯一”来推导时间段,然后根据date2值将这些时间段分配给每行。@akrun您的输出是正确的,但最后一个值应该是2。第二个时间段从2018-09-18开始到2019-06-23,并且2018-12-12处于这一时期,因此应该得到一个值2。这是预期的正确值吗?
c(0,未列出(Map)(函数(u,v)和(x$date2>=u&x$date2@akrun我给出了预期值只是为了给出一个想法。基本上,我必须在该列上做一个“唯一”来推导时间段,然后根据date2值将这些时间段分配给每行。@akrun您的输出是正确的,但最后一个值应该是2。第二个时间段从2018-09-18开始到2019-06-23,并且2018-12-12处于这一时期,因此应该得到一个值2。谢谢