首页 > 解决方案 > 如何按行名在 2 个不同的数据集中附加 2 列

问题描述

我有两个单独的数据框:

> head(data)

  Drug.Substance.Calcium Drug.Substance.Glycine Drug.Substance.Histidine
    1                             45.0                                120.0                                                              
    2                             43.0                                100.0                                                               
    3                             33.7                                 9.6                                                              

我想将单位添加到列名。这些单位可以在不同的数据集中找到(在UOM列中)

> head(ag_parameter_6[10:13,])
    X                PARAMETER DATA_TYPE PARAMETER_TYPE    UOM
10  9   Drug Substance.Calcium    double              D mmol/L
11 10 Drug Substance.Endotoxin    string              D       
12 11   Drug Substance.Glycine    double              D  mg/mL
13 12 Drug Substance.Histidine    double              D mmol/L

如何修改data数据框以使每列都有正确的单位(在 UOM 中找到)?

标签: r

解决方案


我们可以在base R

i1 <- match(names(data), ag_parameter_6$PARAMETER)
names(data) <- paste(names(data), ag_parameter_6$UOM[i1])

-输出

> data
  Drug.Substance.Calcium mmol/L Drug.Substance.Glycine mg/mL Drug.Substance.Histidine mmol/L
1                             1                         45.0                           120.0
2                             2                         43.0                           100.0
3                             3                         33.7                             9.6

数据

data <- data.frame(
    Drug.Substance.Calcium = c(1L, 2L, 3L),
    Drug.Substance.Glycine = c(45, 43, 33.7),
  Drug.Substance.Histidine = c(120, 100, 9.6)
       )


ag_parameter_6 <- data.frame(
  stringsAsFactors = FALSE,
                           PARAMETER = c("Drug.Substance.Calcium",
                                         "Drug.Substance.Endotoxin",
                                         "Drug.Substance.Glycine","Drug.Substance.Histidine"),
         DATA_TYPE = c("double", "string", "double", "double"),
    PARAMETER_TYPE = c("D", "D", "D", "D"),
               UOM = c("mmol/L", NA, "mg/mL", "mmol/L")
                  )

推荐阅读