R 如何按ID排序,然后检测同一ID内的差异?

R 如何按ID排序,然后检测同一ID内的差异?,r,R,我有一个数据集,其中包含几个ID和示例日期列,如 dataframe <- data.frame(ID=c("ID1","ID2","ID3","ID4", "ID2", "ID2", "ID3","ID4", "ID5","ID1"), sample

我有一个数据集,其中包含几个ID和示例日期列,如

dataframe <- data.frame(ID=c("ID1","ID2","ID3","ID4", "ID2", "ID2", "ID3","ID4", "ID5","ID1"), 
                    sample_date=c(1991-05-23, 1991-05-24,1991-05-24, 1991-05-26,1991-05-27,1991-05-28,1991-05-30,1991-05-31, 1991-06-03, 1991-06-03), 
                    sex =c(1,2,1,2,2,2,1,2,1,1), and_so_om =c(1))
然后我想按照相同的ID进行排序,并检测相同的ID是否有非常接近的样本日期。 30天内

首先,我尝试按ID对数据帧进行排序,然后得到 结果如下:

outcome <- dataframe %>% select(ID,sample_date) %>% count(ID,sample_date)
从这里开始,我不知道如何计算同一ID内采样日期的天数差。

也许,您可以试试

library(dplyr)

n <- 3
dataframe %>%
  mutate(sample_date = as.Date(sample_date)) %>%
  arrange(ID, sample_date) %>%
  group_by(ID) %>%
  summarise(is_closest = any(diff(sample_date) <= n))
也许你可以试试

library(dplyr)

n <- 3
dataframe %>%
  mutate(sample_date = as.Date(sample_date)) %>%
  arrange(ID, sample_date) %>%
  group_by(ID) %>%
  summarise(is_closest = any(diff(sample_date) <= n))
我认为R底的骨料足以使其

dfout <- aggregate(sample_date~ID,dataframe,function(x) min(diff(sort(x)),Inf)<=3)
我认为R底的骨料足以使其

dfout <- aggregate(sample_date~ID,dataframe,function(x) min(diff(sort(x)),Inf)<=3)

你的预期产出和你已经尝试了什么?你的预期产出和你已经尝试了什么?谢谢Ronak,这正是我想要的。谢谢Ronak,这正是我想要的。
> dfout
   ID sample_date
1 ID1       FALSE
2 ID2        TRUE
3 ID3       FALSE
4 ID4       FALSE
5 ID5       FALSE