根据 R 中的条件估算分组数据中的值

问题描述 投票:0回答:1

我喜欢用

tidyverse
逻辑来估算分组面板数据中的变量。故事是这样的:这是调查数据,人们在特定年份(时间)被问及过去几年的行为。因此,我假设当有人说“我有 5 年的汽车”时,那些年的汽车变量可以设置为 1。那些年没有问这个问题。这是最少的数据和我想要实现的归因。

paneldata = data.frame(id=c(rep(1,10),rep(2,10)), 
                       time=seq(1:10), 
                       car=c(1,NA,NA,NA,NA,0,NA,NA,NA,1,1,NA,NA,NA,1,NA,NA,NA,NA,1),
                       car_imp_goal=c(1,NA,NA,NA,NA,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1))
paneldata

这是我试过的

paneldata <- paneldata %>% mutate(car_imp_trial = car) 
paneldata %>% group_by(id) %>% fill(car_imp_trial , .direction = "up")


# A tibble: 20 × 5
# Groups:   id [2]
      id  time   car car_imp_goal car_imp_trial 
   <dbl> <int> <dbl>   <dbl>    <dbl>
 1     1     1     1       1        1
 2     1     2    NA      NA        0
 3     1     3    NA      NA        0
 4     1     4    NA      NA        0
 5     1     5    NA      NA        0
 6     1     6     0       0        0
 7     1     7    NA       1        1
 8     1     8    NA       1        1
 9     1     9    NA       1        1
10     1    10     1       1        1
11     2     1     1       1        1
12     2     2    NA       1        1
13     2     3    NA       1        1
14     2     4    NA       1        1
15     2     5     1       1        1
16     2     6    NA       1        1
17     2     7    NA       1        1
18     2     8    NA       1        1
19     2     9    NA       1        1
20     2    10     1       1        1

过去的行为问题只在特定年份被问到(例如时间 5 和 10)。我需要

group_by(id)
然后使用
ifelse
条件来选择相关时间,即5或10然后正在考虑使用
fill
car_imp_trial 
错的是从第6年开始填0,不是粘贴的行为题

r tidyverse data-manipulation
1个回答
1
投票

创建一个时间间隔id,然后向上填充car栏

paneldata%>%
   group_by(id,id2 = cut_interval(time, length = 5,labels =FALSE))%>%
   fill(car, .direction = 'up')

# A tibble: 20 × 5
# Groups:   id, id2 [4]
      id  time   car car_imp   id2
   <dbl> <int> <dbl>   <dbl> <int>
 1     1     1     1       1     1
 2     1     2    NA      NA     1
 3     1     3    NA      NA     1
 4     1     4    NA      NA     1
 5     1     5    NA      NA     1
 6     1     6     0       0     2
 7     1     7     1       1     2
 8     1     8     1       1     2
 9     1     9     1       1     2
10     1    10     1       1     2
11     2     1     1       1     1
12     2     2     1       1     1
13     2     3     1       1     1
14     2     4     1       1     1
15     2     5     1       1     1
16     2     6     1       1     2
17     2     7     1       1     2
18     2     8     1       1     2
19     2     9     1       1     2
20     2    10     1       1     2
© www.soinside.com 2019 - 2024. All rights reserved.