【问题标题】:Replace codes with values in a data frame用数据框中的值替换代码
【发布时间】:2020-12-04 17:35:12
【问题描述】:

我有一个带有代码及其各自值的 data.frame,例如:

cod <- data.frame("Sy" = c("11","12","13","14","15"),
                  "Class" = c("A","B","C","D","E"))

和其他data.frame,我需要用前面指示的值替换代码。一些例子:

dados <- data.frame("Sy" = c("14","13","14","11","14","14","12","15","13","14"),
                "Value" = c(""))

简而言之,我想将dados中的"14"替换为"D",将"13"替换为"C",依此类推,得到:

"Sy"    "Value"
"14"    "D"
"13"    "C"
"14"    "D"
"11"    "A"
"14"    "D"
"14"    "D"
"12"    "B"
"15"    "E"
"13"    "C"
"14"    "D"

我知道我可以使用:

for (i in c("11","12","13","14","15")) {
  dados$Value[which(dados$Sy == i)] <-cod$Class[which(cod$Sy == i)] 
}

但我需要使用更大的cod data.frame,包含数百个代码。有没有更方便的方法?

我会感谢任何帮助。

【问题讨论】:

  • dados$Value

标签: r


【解决方案1】:

只需合并您的字母值:

dados <- merge(dados, cod, by="Sy", all.x=TRUE)

【讨论】:

    【解决方案2】:

    dplyr 的选项

    library(dplyr)
    dados <- left_join(dados, cod, by = "Sy")
    

    【讨论】:

      【解决方案3】:

      通过使用 plyr 包:

        library(plyr)
        dados <- plyr::join(dados,
                            cod,
                            by = "Sy",
                            type = "left",
                            match = "all")
      

      【讨论】:

        猜你喜欢
        • 2018-01-02
        • 2017-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-11
        • 2014-11-12
        • 2014-12-15
        • 2017-05-15
        相关资源
        最近更新 更多