如何解决R怎么做这个stata代码:by panel_key (t), sort: keep if _N == 2?
我有一个名为“组合”的 df,其中存储了实验前和实验后的观察结果。观察结果像这样相互叠加:
panel_key <- c(123,123,456,789,147,258)
t <- c(0,1,0)
treatment<- c(0,2,1)
dependantvar <- c(1,3,4,4)
df <- data.frame(panel_key,t,treatment,dependantvar)
t
表示前 (0) 和后 (1) 和 panel_key
索引个人。有些个体在预处理中具有相同的panel_key
。此处的目标是仅在 panel_key
=0 和 t
=1 处相同时匹配 t
。另一种思考方式是,我想删除 t
=0 处的所有行,这些行在 t
=1 处没有匹配的 panel_key。
解决方法
简单的tidyverse解决方案
library(tidyverse)
panel_key <- c(123,123,456,789,147,258)
t <- c(0,1,0)
treatment<- c(0,2,1)
dependantvar <- c(1,3,4,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))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。