我有以下数据框
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
如何实现?
答案 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