1

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

BVT IPL LHC MDC
100 200 300 400

矩阵 2

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

在上面,我取 Matrix 2 行名的左边 3 个字符,找到对应的列名,然后将该列中的值除以与最右边 3 个字符对应的列中的值,然后将该值放在对应的行中矩阵 2。

任何有关此问题的帮助将不胜感激!

谢谢迈克
_

4

1 回答 1

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
于 2013-10-15T08:58:03.577 回答