R如何做这个stata代码:按panel_key(t),排序:如果_N == 2则保留?
R how to do this stata code: by panel_key (t), sort: keep if _N == 2?
我有一个名为“组合”的 df,其中存储了预实验和 post 实验观察结果。观察结果像这样相互堆叠:
panel_key <- c(123, 123, 456, 456, 789, 789, 147, 147, 258)
t <- c(0,1,0,1,0,1,0,0,0)
treatment<- c(0,0,1,1,2,2,1,2,1)
dependantvar <- c(1,2,2,1,3,4,1,2,4)
df <- data.frame(panel_key, t, treatment, dependantvar)
t
表示 pre (0) 和 post (1) 和 panel_key
索引个体。有些人在治疗前有相同的panel_key
。这里的objective是匹配panel_key
只有在t
=0和t
=1处相同。另一种思考方式是,我想删除 t
=0 处的所有行,这些行在 t
=1.
处没有匹配的 panel_key
简单的 tidyverse 解决方案
library(tidyverse)
panel_key <- c(123, 123, 456, 456, 789, 789, 147, 147, 258)
t <- c(0,1,0,1,0,1,0,0,0)
treatment<- c(0,0,1,1,2,2,1,2,1)
dependantvar <- c(1,2,2,1,3,4,1,2,4)
df <- data.frame(panel_key, t, treatment, dependantvar)
detect_0_1 <- function(vector) {
all(c(0,1) %in% vector)
}
df %>%
group_by(panel_key) %>%
filter(detect_0_1(t))
我有一个名为“组合”的 df,其中存储了预实验和 post 实验观察结果。观察结果像这样相互堆叠:
panel_key <- c(123, 123, 456, 456, 789, 789, 147, 147, 258)
t <- c(0,1,0,1,0,1,0,0,0)
treatment<- c(0,0,1,1,2,2,1,2,1)
dependantvar <- c(1,2,2,1,3,4,1,2,4)
df <- data.frame(panel_key, t, treatment, dependantvar)
t
表示 pre (0) 和 post (1) 和 panel_key
索引个体。有些人在治疗前有相同的panel_key
。这里的objective是匹配panel_key
只有在t
=0和t
=1处相同。另一种思考方式是,我想删除 t
=0 处的所有行,这些行在 t
=1.
简单的 tidyverse 解决方案
library(tidyverse)
panel_key <- c(123, 123, 456, 456, 789, 789, 147, 147, 258)
t <- c(0,1,0,1,0,1,0,0,0)
treatment<- c(0,0,1,1,2,2,1,2,1)
dependantvar <- c(1,2,2,1,3,4,1,2,4)
df <- data.frame(panel_key, t, treatment, dependantvar)
detect_0_1 <- function(vector) {
all(c(0,1) %in% vector)
}
df %>%
group_by(panel_key) %>%
filter(detect_0_1(t))