gpt4 book ai didi

r - 如何使用(data.frame)查找表中的值标签替换数据框中的数字代码?

转载 作者:行者123 更新时间:2023-12-02 01:48:32 25 4
gpt4 key购买 nike

这是 this question 的后续问题,最初的灵感来自 this question ,但并不完全相同。

这就是我的情况。首先,我从数据库中提取一些数据,

df <- data.frame(id = c(1:6),
profession = c(1, 5, 4, NA, 0, 5))
df
# id profession
# 1 1
# 2 5
# 3 4
# 4 NA
# 5 0
# 6 5

其次,我提取一个 key 表,其中包含有关职业代码的人类可读信息,

profession.codes <- data.frame(profession.code = c(1,2,3,4,5),
profession.label = c('Optometrists',
'Accountants', 'Veterinarians',
'Financial analysts', 'Nurses'))
profession.codes
# profession.code profession.label
# 1 Optometrists
# 2 Accountants
# 3 Veterinarians
# 4 Financial analysts
# 5 Nurses

现在,我想用 profession.codes 中的标签覆盖 df 中的 profession 变量,最好使用 plyr 包加入,但我对任何智能解决方案持开放态度。虽然我确实喜欢那个层保留了 x 的顺序。

我目前是这样做的,

# install.packages('plyr', dependencies = TRUE)
library(plyr)

profession.codes$profession <- profession.codes$profession.code
df <- join(df, profession.codes, by="profession")
# levels(df$profession.label)
df$profession.label <- factor(df$profession.label,
levels = c(levels(df$profession.label),
setdiff(df$profession, df$profession.code)))
# levels(df$profession.label)
df$profession.label[df$profession==0 ] <- 0
df$profession.code <- NULL
df$profession <- NULL
names(df) <- c("id", "profession")
df
# id profession
# 1 Optometrists
# 2 Nurses
# 3 Financial analysts
# 4 <NA>
# 5 0
# 6 Nurses

这就是我在不丢失NA0的情况下覆盖profession的方法。

问题是 0 可能是 17 或任何数字,我想以某种方式解释这一点。此外,如果可能的话,我还想缩短我的代码。

任何帮助将不胜感激。

谢谢,埃里克

最佳答案

这是基础中的一种方法:

df <- data.frame(id = c(1:6),
profession = c(1, 5, 4, NA, 0, 5))

pc <- data.frame(profession.code = c(1,2,3,4,5),
profession.label = c('Optometrists',
'Accountants', 'Veterinarians',
'Financial analysts', 'Nurses'))


df$new <- as.character(pc[match(df$profession,
pc$profession.code), 'profession.label'])
df[is.na(df$new), 'new'] <- df[is.na(df$new), 'profession']
df$new <- as.factor(df$new)
df

其产量:

  id profession                new
1 1 1 Optometrists
2 2 5 Nurses
3 3 4 Financial analysts
4 4 NA <NA>
5 5 0 0
6 6 5 Nurses

关于r - 如何使用(data.frame)查找表中的值标签替换数据框中的数字代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158617/

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