gpt4 book ai didi

r - 从多个观察中分配一个 ID

转载 作者:行者123 更新时间:2023-12-01 10:52:09 24 4
gpt4 key购买 nike

我有一个调查数据集,其中受访者多次出现。受访者由 ID 标识。除此之外,还有第二个变量 (IDPREV),它给出了先前识别受访者的 ID(在上次访谈中分配给受访者的 ID)。我想为每个受访者创建一个唯一的 ID,每次采访受访者时都保持不变。受访者可以在数据集中出现多次。任何建议和想法表示赞赏!谢谢!

结构看起来像那样。不幸的是,它组织得不是很好,而且受访者可能会出现多次:

structure(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, NA, NA, NA, NA, NA, 
1, 2, 3, 4, 5), .Dim = c(10L, 2L), .Dimnames = list(NULL, c("ID",
"IDPREV")))

最佳答案

像这样的东西应该会很快收敛:

x      <- ifelse(is.na(df$IDPREV), df$ID, df$IDPREV)
update <- function(x) x[match(x, df$ID)]
y <- update(x)

while(!identical(y, x)) {
x <- y
y <- update(x)
}

df$FINAL_ID <- x

测试:

df <- structure(list(ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), 
IDPREV = c(NA, NA, NA, NA, NA, 1, 2, 3, 4, 5, 10, 11)),
.Names = c("ID", "IDPREV"),
row.names = c(NA, 12L), class = "data.frame")

最终输出为:

#    ID IDPREV FINAL_ID
# 1 1 NA 1
# 2 2 NA 2
# 3 3 NA 3
# 4 4 NA 4
# 5 5 NA 5
# 6 6 1 1
# 7 7 2 2
# 8 8 3 3
# 9 9 4 4
# 10 10 5 5
# 11 11 10 5
# 12 12 11 5

关于r - 从多个观察中分配一个 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17800088/

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