r-如何在面板数据中检查受访者是否随着时间的推移改变了答案



我使用的是一个面板数据,其中会随着时间的推移跟踪个人。我想检查一下受访者在一年与另一年相比是否改变了他们的答案。例如,下面的性别变量表示男性为1,女性为0。ID为1的人在2005年至2006年间将答案从男性改为女性。

由于我的data.frame中有数百万人,我想创建一个变量,对于随着时间的推移而改变答案的受访者,该变量的值为9,对于持续回答的受访者,其值为8。有人能指导我如何使用dplyr来实现这一点吗?

id  year    unemployment       change
1   2005        1                 9
1   2006        0                 9
1   2007        0                 9
2   2007        1                 8
2   2008        1                 8
structure(list(id = structure(c(1, 1, 1, 2, 2), format.stata = "%9.0g"), 
year = structure(c(2005, 2006, 2007, 2007, 2008), format.stata = "%9.0g"), 
unemployment = structure(c(1, 0, 0, 1, 1), format.stata = "%9.0g"), 
change = structure(c(9, 9, 9, 8, 8), format.stata = "%9.0g")), row.names = c(NA, 
-5L), class = c("tbl_df", "tbl", "data.frame"))

如果我们认为我们需要检测失业率的变化,而不是性别的变化,我们可以使用以下内容:

d %>% 
group_by(id) %>% 
mutate(change = ifelse(n_distinct(unemployment) == 1, 8, 9))

然而,我不建议使用像8和9这样的值来编码这样的更改变量,因为它不容易理解。

相关内容

最新更新