【发布时间】:2018-11-24 10:51:16
【问题描述】:
我有一个不平衡的面板数据(这意味着在所有时间段都没有观察到某些人)。我想创建一个虚拟变量,如果在两个或多个时期观察到一个人,则取值为 1,否则取值为 0。 有人能够做到这一点并可以向我解释吗? 对不起,如果这个问题看起来有点“琐碎”。
我试过这个,但它会创建多个假人,我只需要一个。
for(level in unique(df$id)){
share[paste("dummy", level, sep = "_")] <- ifelse(df$id == level, 1, 0)
}
一个小例子可以是:
set.seed(123)
df <- data.frame(id = sample(1:10, 20, replace = TRUE),
happy = sample(c("yes", "no"), 20, replace = TRUE))
预期输出:
id happy dummy
3 no 1
8 no 0
5 no 1
9 no 1
10 no 1
1 no 1
6 no 1
9 no 1
6 yes 1
5 yes 1
10 no 1
5 no 1
7 no 0
6 no 1
2 yes 0
9 yes 1
3 no 1
1 yes 1
4 yes 0
10 yes 1
【问题讨论】:
-
请展示一个可重现的小例子和预期的输出
标签: r panel-data