r - 将 ID 字符串重新编码为其他字符串的最佳实践

标签 r

我有一个包含一系列 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/

相关文章:

r - dplyr "weighted sum"和 across()

r - 更改随机效应分组变量的标签会更改 lme4 中的结果

mysql - 使用 Shiny 将记录插入 MYSQL 数据库

r - ggplot : arranging boxplots of multiple y-variables for each group of a continuous x

r - 使用 ggplot2 在 R 中绘制高斯混合图

r - PCA分析中不同类型的椭圆

r - 创建空 data.table 时如何处理 nrows?

r - R不知道时间是循环的吗?如何找到一天中最接近给定时间的时间

r - 将 ggplot 色阶渐变应用于部分数据

r - 在函数内部打印或显示变量