我有一个包含一系列 ID 的列,我需要将其重新编码为更直观的内容。这是我的文件的示例:
ID = c("DR-0001", "DR-0002", "DR-0003", "DR-0004", "DR-0001", "DR-0002", "DR-0001")
df <- data.frame(ID)
我想在其中重新标记条目的位置创建一个新列。在伪代码中,我想要以下内容:
df$ID_useful = 2019/01 if df$ID == "DR-0001", 2015/06 if df$ID == "DR-0002" etc.
这样最终的结果会是这样的:
ID = c("DR-0001", "DR-0002", "DR-0003", "DR-0004", "DR-0001", "DR-0002", "DR-0001")
ID_useful = c("2019/01", "2015/06", "1995/02", "2012/08", "2019/01", "2015/06", "2019/01")
如果不创建十亿个 ifelse 命令行,我不确定如何做到这一点。任何建议表示赞赏!
最佳答案
如果我们制作那些唯一的键/值数据集,那么使用连接会更有效率
library(dplyr)
keydat <- data.frame(ID = sprintf('DR-%04d', 1:4),
ID_useful = c("2019/01", "2015/06", "1995/02", "2012/08"))
df %>%
left_join(keydat)
-输出
joining, by = "ID"
ID ID_useful
1 DR-0001 2019/01
2 DR-0002 2015/06
3 DR-0003 1995/02
4 DR-0004 2012/08
5 DR-0001 2019/01
6 DR-0002 2015/06
7 DR-0001 2019/01
关于r - 将 ID 字符串重新编码为其他字符串的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68461286/