gpt4 book ai didi

r - 在面板数据中创建缺失的观察

转载 作者:行者123 更新时间:2023-12-01 00:59:51 25 4
gpt4 key购买 nike

我正在处理具有唯一案例标识符和观察时间点列(长格式)的面板数据。有时间常数变量和时变观测值:

    id  time    tc1     obs1
1 101 1 male 4
2 101 2 male 5
3 101 3 male 3
4 102 1 female 6
5 102 3 female 2
6 103 1 male 2

对于我的模型,我现在需要每个时间点每个 id 具有完整记录的数据。换句话说,如果缺少观察,我仍然需要将 id、时间、时间常数变量和观察变量的 NA 放在一行中(就像 (102, 2, "female", NA) 行一样)在上面的例子中)。所以我的问题是:
  • 如何确定我的数据集中是否已存在具有唯一 id 和时间组合的行?
  • 如果不是,我如何添加这一行,携带时间常数变量并用 NA 填充观察结果?

  • 如果有人能对此有所了解,那就太好了。

    非常感谢!

    编辑

    谢谢大家的回复。这是我最终做的,它混合了几种建议的方法。问题是我每行有几个随时间变化的变量(obs1-obsn),我没有得到 dcast 来适应 - value.name 不超过参数。
    # create all possible permutations of id and year
    iddat = expand.grid(id = unique(dataset$id), time = (c(1996,1999,2002,2005,2008,2011)))
    iddat <- iddat[order(iddat$id, iddat$time), ]

    # add permutations to existing data, combinations so far missing are NA
    dataset_new <- merge(dataset, iddat, all.x=TRUE, all.y=TRUE, by=c("id", "time"))

    # drop time-constant variables from data
    dataset_new[c("tc1", "tc2", "tc3")] <- list(NULL)

    # merge back time-constant variables from original data
    temp <- dataset[c("tc1", "tc2", "tc3")]
    dataset_new <- merge(dataset_new, temp, by=c("id"))

    # sort
    dataset_new <- dataset_new[order(dataset_new$id, dataset_new$time), ]
    dataset_new <- unique(dataset_new) # some rows are duplicates after last merge, no idea why

    rm(temp)
    rm(iddat)

    祝一切顺利,再次感谢,马特

    最佳答案

    您可以创建一个空数据集,然后合并您有匹配项的记录。

     # Create dataset.  For you actual data ,you would replace c(1:3) with 
    # c(1:max(yourdata$id)) and adjust the number of time periods to match your data.
    id <- rep(c(1:3), each = 3)
    time <- rep(c(1:3), 3)
    df <- data.frame(id,time)


    test <- df[c(1,3,5,7,9),]
    test$tc1 <- c("male", "male", "female", "male", "male")
    test$obs1 <-c(4,5,3,6,2)

    merge(df, test, by.x = c("id","time"), by.y = c("id","time"), all.x = TRUE)

    结果:
     id time    tc1 obs1
    1 1 1 male 4
    2 1 2 <NA> NA
    3 1 3 male 5
    4 2 1 <NA> NA
    5 2 2 female 3
    6 2 3 <NA> NA
    7 3 1 male 6
    8 3 2 <NA> NA
    9 3 3 male 2

    关于r - 在面板数据中创建缺失的观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24437508/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com