我正试图找到一种方法,使用第一个度量的条件语句对我的数据集(个体的重复度量(进行子集或筛选。换句话说,我想过滤数据集,只包括在时间点1出现特定情况的个人的所有时间点的数据。
示例数据:
Puck_Number <- c(1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6)
Date <- as.Date(c('2020-07-29','2020-07-29','2020-07-29','2020-07-29','2020-07-29','2020-07-29','2020-09-07','2020-09-07','2020-09-07','2020-09-07','2020-09-07','2020-09-07','2020-09-22','2020-09-22','2020-09-22','2020-09-22','2020-09-22','2020-09-22'))
Bleached <- c(1,0,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,1)
Alive <- c(1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1)
Data <- data.frame(Puck_Number, Date, Bleached, Alive)
这将产生以下内容:
Puck_Number Date Bleached Alive
1 1 2020-07-29 1 1
2 2 2020-07-29 0 1
3 3 2020-07-29 1 1
4 4 2020-07-29 1 1
5 5 2020-07-29 0 1
6 6 2020-07-29 1 1
7 1 2020-09-07 1 1
8 2 2020-09-07 0 1
9 3 2020-09-07 1 1
10 4 2020-09-07 1 1
11 5 2020-09-07 0 0
12 6 2020-09-07 1 1
13 1 2020-09-22 0 0
14 2 2020-09-22 0 1
15 3 2020-09-22 0 0
16 4 2020-09-22 1 1
17 5 2020-09-22 0 0
18 6 2020-09-22 1 1
我想通过过滤或子集化包括的只是在"2020-07-29"日期期间漂白列中有1的那些,以及对整个数据集的这些个体的重复测量。
所以我正在寻找这样的数据:
Puck_Number Date Bleached Alive
1 1 2020-07-29 1 1
3 3 2020-07-29 1 1
4 4 2020-07-29 1 1
6 6 2020-07-29 1 1
7 1 2020-09-07 1 1
9 3 2020-09-07 1 1
10 4 2020-09-07 1 1
12 6 2020-09-07 1 1
13 1 2020-09-22 0 0
15 3 2020-09-22 0 0
16 4 2020-09-22 1 1
18 6 2020-09-22 1 1
冰球号码是每个人的唯一标识符(每次测量都重复(,我怀疑它可能有助于过滤,但我还没有找到用我现有的R技能来实现这一点的方法。
试试这个
with(Data, Data[Puck_Number %in% Puck_Number[Date == as.Date("2020-07-29") & Bleached], ])
输出
Puck_Number Date Bleached Alive
1 1 2020-07-29 1 1
3 3 2020-07-29 1 1
4 4 2020-07-29 1 1
6 6 2020-07-29 1 1
7 1 2020-09-07 1 1
9 3 2020-09-07 1 1
10 4 2020-09-07 1 1
12 6 2020-09-07 1 1
13 1 2020-09-22 0 0
15 3 2020-09-22 0 0
16 4 2020-09-22 1 1
18 6 2020-09-22 1 1
或者一种不同的
library(tidyverse)
subset <- Data %>% filter(Date == as.Date("2020-07-29", format = "%Y-%m-%d") & Bleached == 1) %>%
select(Puck_Number) %>% left_join(Data)
> subset
Puck_Number Date Bleached Alive
1 1 2020-07-29 1 1
2 3 2020-07-29 1 1
3 4 2020-07-29 1 1
4 6 2020-07-29 1 1
5 1 2020-09-07 1 1
6 3 2020-09-07 1 1
7 4 2020-09-07 1 1
8 6 2020-09-07 1 1
9 1 2020-09-22 0 0
10 3 2020-09-22 0 0
11 4 2020-09-22 1 1
12 6 2020-09-22 1 1