Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 aa使用data.table查找区间交点的长度_R_Date_Data.table_Posixct - Fatal编程技术网

R aa使用data.table查找区间交点的长度

R aa使用data.table查找区间交点的长度,r,date,data.table,posixct,R,Date,Data.table,Posixct,我有这样的数据: View(dose_merged) SUBJECT_Blinded PACKID SACDPDAT SACRTDAT treatment_interval SD_SDAT SD_EDAT 1 1501301 10094 2012-05-26 2012-07-23 58 2012-01-03 2013-01-02 2 1601301 10555 2012-01

我有这样的数据:

View(dose_merged)

    SUBJECT_Blinded PACKID  SACDPDAT    SACRTDAT    treatment_interval  SD_SDAT     SD_EDAT
1   1501301         10094   2012-05-26  2012-07-23  58                  2012-01-03  2013-01-02
2   1601301         10555   2012-01-03  2012-01-31  28                  2012-01-03  2013-01-0
对于数据表中的列类型:

> mapply(class, dose_merged)
$SUBJECT_Blinded
[1] "numeric"

$PACKID
[1] "numeric"

$SACDPDAT
[1] "POSIXct" "POSIXt" 

$SACRTDAT
[1] "POSIXct" "POSIXt" 

$treatment_interval
[1] "Interval"
attr(,"package")
[1] "lubridate"

$SD_SDAT

[1] "POSIXct" "POSIXt" 

$SD_EDAT
[1] "POSIXct" "POSIXt" 
我想确定区间相交的长度:intervalSACDPDAT、SACRTDAT和intervalSD_SDAT、SD_EDAT。 我正在尝试:

dose_merged[,intersect1 := aaply(dose_merged, 1, function(x){intersect(interval(x[3],x[4]),      interval(x[8],x[9]))})]
但随后我收到错误消息:

Error: error while computing 'x' when choosing method for 'intersect': Error in as.POSIXct.default(start) : 
  do not know how to convert 'start' to class “POSIXct”
线路

intersect(interval(x[3],x[4]), interval(x[8],x[9]))})
适用于指定的第x行。 你知道我做错了什么吗

DPUTU的前两行合并:

structure(list(SUBJECT_Blinded = c(1101001, 1101001), PACKID = c(10096, 
10595), SACDPDAT = structure(c(1335304800, 1325545200), class = c("POSIXct", 
"POSIXt"), tzone = ""), SACRTDAT = structure(c(1340316000, 1327964400
), class = c("POSIXct", "POSIXt"), tzone = ""), treatment_interval = structure(c(58, 
28), class = structure("Interval", package = "lubridate")), TS_SDAT = structure(c(NA_real_, 
NA_real_), class = c("POSIXct", "POSIXt"), tzone = ""), TS_EDAT = structure(c(NA_real_, 
NA_real_), class = c("POSIXct", "POSIXt"), tzone = ""), SD_SDAT = structure(c(1325545200, 
1325545200), class = c("POSIXct", "POSIXt"), tzone = ""), SD_EDAT = structure(c(1357081200, 
1357081200), class = c("POSIXct", "POSIXt"), tzone = "")), .Names = c("SUBJECT_Blinded", 
"PACKID", "SACDPDAT", "SACRTDAT", "treatment_interval", "TS_SDAT", 
"TS_EDAT", "SD_SDAT", "SD_EDAT"), sorted = "SUBJECT_Blinded", class = c("data.table", 
"data.frame"), row.names = c(NA, -2L), .internal.selfref = <pointer: 0x0000000002f30788>)

您能否提供一个可复制的数据示例—dputdose_合并输出。否则,我们必须解决如何创建intervalIt类列的问题。我很难发布原始数据,因为这是真实的数据,我不应该将其公开。不过,我可以举出一些例子。正如我所说,我当然可以举出一些类似的例子。但是,我不知道这是否有帮助,因为$treatment\u interval列在我介绍的代码中没有任何作用。总而言之,我可以向您提供这些数据,告诉我它是否真的有帮助:当然,您可以提供前两行dputted数据。您给我们的数据是alreadyOK,我已经添加了前两行dputted数据。