我有一个数据框,其中包含对几个人的时间序列观察(由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
中的“ data
”等于“ time
”:time
中的data
包含(小数点前的数字) “ time
,而没有将两个数据集都舍入为整数?
答案 0 :(得分:0)
如果没有实际数据,很难验证。但是这里:
data %>%
mutate(timeR=round(time)) %>%
semi_join(
mutate(timedata, timeR=round(time)),
by=c("ID", "timeR")) %>%
select(-timeR)