【发布时间】:2020-02-25 13:49:04
【问题描述】:
我有一个数据框,其中包含对几个人的时间序列观察(由ID 标识)。它的结构是这样的:
>data
ID time Var1 Var2 Var3
a 1 … … …
a 2 … … …
a 3 … … …
a 4 … … …
…
b 1 … … …
b 1 … … …
b 1 … … …
b 1 … … …
…
I have another data frame `timedata` that contains one row for each `ID`, it is structured like this:
```r
>timedata
ID time
a 200
b 250
c 278
… …
对于每个人,我想对第一个数据集data 中的值进行子集化,其中time 等于第二个数据集timedata 中指定的时间。我通常会使用这个:
data2 <-
map2_df(timedata$ID, timedata$time, ~
data%>%
filter(ID == .x, time == .y))
但是,我的真实times有小数,由于记录器的不同,每个数据集中的小数不一样(但小数位前的数字是)。如何将此代码从:time in data "equals" time 更改为:time in data "contains (the numbers before the decimal)" time,无需四舍五入两个数据集整数?
【问题讨论】:
-
加入表格然后过滤怎么样?这也会是更快的方法。