根据面板数据中的出现删除观察
Remove observation based on occurrence in panel data
我正在处理面板数据
我想保留对 id 的观察,即第一次 v_1=1 不是特定 id 的第一次。
stata中的一种bysort命令
在这个例子中我只想保留 61312 obs 而不是 42848
谢谢
dd <- read.table(text="
id year v_1
61312 2015 0
61312 2016 0
61312 2017 1
61312 2018 1
42848 2016 1
42848 2017 0", header=TRUE)
您可以使用 dplyr
中的 group_by
和 filter
来帮助完成此任务
library(dplyr)
dd %>%
group_by(id) %>%
filter(first(v_1) != 1)
我们使用 group_by
所以当我们使用 first()
时它会查看每个 id
的第一个值
你可以使用-
subset(dd, id %in% unique(id)[v_1[!duplicated(id)] != 1])
# id year v_1
#1 61312 2015 0
#2 61312 2016 0
#3 61312 2017 1
#4 61312 2018 1
v1[!duplicated(id)]
仅保留每个 id
的第一个 v1
值,而我们 select 仅保留第一个值不相等的那些 id
到 1.
我正在处理面板数据 我想保留对 id 的观察,即第一次 v_1=1 不是特定 id 的第一次。 stata中的一种bysort命令 在这个例子中我只想保留 61312 obs 而不是 42848
谢谢
dd <- read.table(text="
id year v_1
61312 2015 0
61312 2016 0
61312 2017 1
61312 2018 1
42848 2016 1
42848 2017 0", header=TRUE)
您可以使用 dplyr
中的 group_by
和 filter
来帮助完成此任务
library(dplyr)
dd %>%
group_by(id) %>%
filter(first(v_1) != 1)
我们使用 group_by
所以当我们使用 first()
时它会查看每个 id
你可以使用-
subset(dd, id %in% unique(id)[v_1[!duplicated(id)] != 1])
# id year v_1
#1 61312 2015 0
#2 61312 2016 0
#3 61312 2017 1
#4 61312 2018 1
v1[!duplicated(id)]
仅保留每个 id
的第一个 v1
值,而我们 select 仅保留第一个值不相等的那些 id
到 1.