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

R:查找与行名称的子字符串匹配的列名,r,substring,R,Substring,我试图从某个列中提取一个值,其中该列名称与相应行名称的前3个字母匹配。我认为用一个例子来解释是最容易的: 矩阵1 BVT IPL LHC MDC 100200300400 矩阵2 Col1 Col 2 BVTIPL 100/200 IPLBVT 200/100 LHCIPL 300/200 ... ... MDCBVT 400/100 在上面,我取矩阵2行名称的左边3个字符,找到相应的列名,将该列中的值除以最右边3个字符对应的列中的值,并将该值放入矩阵2的相应行中 对此问题的任何帮助都将不胜

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

BVT IPL LHC MDC
100200300400

矩阵2

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

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

对此问题的任何帮助都将不胜感激

谢谢

Mike

您可以使用
?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

lookupValues您可以使用
?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
lookupvalue