gpt4 book ai didi

r - factor() 中的未指定水平

转载 作者:行者123 更新时间:2023-12-05 01:18:57 27 4
gpt4 key购买 nike

我正在使用 R 中的一个数据集,它带有一个代码本,它基本上告诉我因子变量的不同级别的标签应该是什么。例如,使用密码本,我可以看到在我的“性别”变量中,0 是“女性”,1 是“男性”。我正在使用此信息相应地标记变量中的值。

然而,令我沮丧的是,我最近发现密码本并不完整。例如,对于一个变量,它告诉我 1 是"is",2 是“否”,但没有告诉我 7、8 和 9 是什么,我可以在数据中看到这些。我想要做的是如下标记这个变量(或类似的东西):

data$variable <- factor(data$variable,
levels=c(1, 2, 7, 8, 9),
labels=c("Yes", "No", "7", "8", "9"))

基本上,我希望码本中未指定的所有级别都标记为它们自己。我遇到的问题是这个代码本缺少其中的很多,我真的宁愿不必手动查看数据中所有未定义的值来为ever变量构建上述代码。另外,如果我忽略那些缺失的级别,R 会自动将它们标记为“NA”,这是我不想要的。

总结:我试图弄清楚如何使用 factor() 这样而不是将所有未指定的级别标记为“NA”,而是将它们标记为它们自己。

最佳答案

您可以在创建因子后转换级别,以便我们可以利用它来发挥我们的优势。

mydat <- c(1, 2, 3,2,3,4,3,2,1,2,4,4,6,5,7,8,9)
# convert to factor ignoring code book
dat <- factor(mydat)
# Create map corresponding to codebook levels
mymap <- c("1" = "Yes", "2" = "No")
# Figure out which levels are accounted for by codebook
id <- levels(dat) %in% names(mymap)
# Convert to appropriate values
levels(dat)[id] <- mymap[levels(dat)[id]]

或者(可能更容易一些)
# alternatively we can construct the map if we have two vectors
# of the value and the codebook value
val <- c(1, 2)
lev <- c("Yes", "No")

dat <- factor(mydat)
levels(dat)[val] <- lev

关于r - factor() 中的未指定水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12885289/

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