如果不重复,如何提取第二次出现的重复主题ID或第一次出现?
如果该行不重复,我希望提取第二次出现的主题 ID(他们的数据的整行)或 第一次出现。
这些数据来自重复访问,我们只对最后非缺失数据中的受试者感兴趣,这意味着该受试者要么具有“筛选”信息而没有“注射”信息,要么两者都有。这就是我们定义“基线”的方式。如果受兼备,我们只希望保留数据的行与注射(最后一个数据处理前),如果只筛选,然后筛选(这是再处理最后的数据前,将等于基准)。
这是一些数据:
df1 <- data.frame(ID = c(1, 2, 2, 3, 3, 4),
visit = c('screening', 'screening', 'injection', 'screening',
'injection', 'screening'),
var2 = c(1, 6, 3, 12, 0, 2))
我尝试过的:
- 分离并重新合并包含这些主题的两个限定符的数据帧。但是当我这样做时,这些列就会被复制,产生一个宽而不是长的数据集(当它们显然匹配完全相同的 ID 时)。
- 在具有多个条件的 dplyr 中使用过滤器,但它只捕获那些具有筛选的过滤器,因为对于重复的主题,这总是首先出现的。
建议?
回答
用 slice_tail()
library(dplyr, warn.conflicts = F)
df1 %>%
group_by(ID) %>%
slice_tail()
#> # A tibble: 4 x 3
#> # Groups: ID [4]
#> ID visit var2
#> <dbl> <chr> <dbl>
#> 1 1 screening 1
#> 2 2 injection 3
#> 3 3 injection 0
#> 4 4 screening 2
由reprex 包( v2.0.0 )于 2021 年 7 月 23 日创建
- 简明回答!伟大的!