在数据框列的第一个字符之后提取值

时间:2019-09-19 09:34:07

标签: r

我有以下数据框

df <- data.frame(V1 = c(1, 2), V2 = c(10, 20), V3=c("9,1", "13,3,4"))

> df
  V1 V2     V3
1  1 10    9,1
2  2 20 13,3,4

现在,我想创建一个新列'V4',该列将采用V3中第一个','之后的值,将其除以V2中的值并将其乘以100

在我的示例中,这将是:

(1除以10)* 100 = 10 (3除以20)* 100 = 15

所以输出看起来像这样

df_new 

  V1 V2     V3    V4
1  1 10    9,1    10
2  2 20 13,3,4    15  

如何实现?

1 个答案:

答案 0 :(得分:1)

在第一个逗号除以V2并乘以100后,我们可以使用正则表达式提取数字。

transform(df, V4 = as.integer(sub("\\d+,(\\d+).*", "\\1", V3))/V2 * 100)
#  V1 V2     V3 V4
#1  1 10    9,1 10
#2  2 20 13,3,4 15