Eri*_*ail 9 replace r rename variable-assignment dataframe
这个问题与这个问题有关,但并不完全相同.
说我有这个数据框,
df <- data.frame(
id = c(1:6),
profession = c(1, 5, 4, NA, 0, 5))
Run Code Online (Sandbox Code Playgroud)
以及包含有关行业代码的人类可读信息的字符串.说,
profession.code <- c(
Optometrists=1, Accountants=2, Veterinarians=3,
`Financial analysts`=4, Nurses=5)
Run Code Online (Sandbox Code Playgroud)
现在,我正在寻找df$profession
用文本中的文本替换值的最简单方法 profession.code
.最好不使用特殊库,除非它显着缩短代码.
我希望我的最终结果是
df <- data.frame(
id = c(1:6),
profession = c("Optometrists", "Nurses",
"Financial analysts", NA, 0, "Nurses"))
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
谢谢,埃里克
flo*_*del 10
你可以这样做:
df <- data.frame(id = c(1:6),
profession = c(1, 5, 4, NA, 0, 5))
profession.code <- c(`0` = 0, Optometrists=1, Accountants=2, Veterinarians=3,
`Financial analysts`=4, Nurses=5)
df$profession.str <- names(profession.code)[match(df$profession, profession.code)]
df
# id profession profession.str
# 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
Run Code Online (Sandbox Code Playgroud)
请注意,我必须0
在profession.code
向量中添加一个条目来说明这些零.
编辑:这是一个更新的解决方案,以考虑埃里克的评论,数据可能包含任何数量的行业代码,没有相应的描述:
match.idx <- match(df$profession, profession.code)
df$profession.str <- ifelse(is.na(match.idx),
df$profession,
names(profession.code)[match.idx])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6816 次 |
最近记录: |