R:查找与行名称的子字符串匹配的列名称

时间:2013-10-15 08:48:38

标签: r substring

我正在尝试从某个列中提取值,其中该列名称与相应行名称的前3个字母匹配。我认为最容易用一个例子来解释:
矩阵1

  

BVT IPL LHC MDC
   100 200 300 400

Matrix 2

  

Col1 Col 2
  BVTIPL 100/200
  IPLBVT 200/100
  LHCIPL 300/200
  ...... ...   MDCBVT 400/100

在上面,我将获取Matrix 2行名称的左侧3个字符,找到相应的列名称,并将该列中的值除以与最右侧3个字符对应的列中的值,并将该值放入矩阵2的相应行。

非常感谢任何有关此问题的帮助!

感谢
麦克

1 个答案:

答案 0 :(得分:1)

您可以使用?substr和命名向量:

lookupValues <- c(BVT=100, IPL=200, LHC=300, MDC=400)

df <- data.frame(col1=c("BVTIPL", "IPLBVT", "LHCIPL", "MDCBVT"),
                stringsAsFactors=FALSE)

df$col2 <- lookupValues[substr(df$col1, 1, 3)]/lookupValues[substr(df$col1, 4, 6)]
df
#    col1 col2
#1 BVTIPL  0.5
#2 IPLBVT  2.0
#3 LHCIPL  1.5
#4 MDCBVT  4.0