首页 > 解决方案 > 基于 R 中另一个表的值在表中首次出现

问题描述

所以我有以下表格:

表 1:

Variable timestamp
s1       1053093896
s2       1053095216
s1       1053181616
s1       1053959216
s2       1054132016

和表 2:

Variable timestamp
s1       1053129600
s2       1053820800

我想提取每个变量的第一次出现,其中 tab1 的时间戳高于 tab2 的时间戳。我寻求的结果如下:

Variable timestamp
s1       1053181616
s2       1054132016

标签: rdataframedplyr

解决方案


这是使用该dplyr软件包的一种方式。我修改了数字以获得更好的可读性。

df1 <- data.frame(variable = c("s1", "s2", "s1", "s1", "s2"),
           timestamp = 1:5, stringsAsFactors = F)

df2 <- data.frame(variable = c("s1", "s2"),
                  timestamp = c(2, 4), stringsAsFactors = F)
> df1
  variable timestamp
1       s1         1
2       s2         2
3       s1         3
4       s1         4
5       s2         5

> df2
  variable timestamp
1       s1         2
2       s2         4

 library(dplyr)
df1 %>% left_join(df2, by = "variable", suffix = c("", "_2")) %>% 
  filter(timestamp > timestamp_2) %>% 
  group_by(variable) %>% 
  slice(1) %>% 
  select(-timestamp_2)

# A tibble: 2 x 2
# Groups:   variable [2]
  variable timestamp
  <chr>        <int>
1 s1               3
2 s2               5

推荐阅读