1

我正在尝试对“市值”列进行总和,但我无法做到,因为它是一个数据框,并且数字末尾有一个 B。

如果我的数据框被称为 Y 计算 533.5 + 15.449 之和所需的代码是什么?

在此处输入图像描述

4

1 回答 1

6
sum( as.numeric( sub("B$", "", as.character(Y$Capitalization) ) ) )

如果对可能的 'MM' 或 'M' 条目提出的担忧是有效的,您可能需要执行一组级联sub调用:

sum( as.numeric( sub("B$", "000000000", 
                      sub("MM", "000000",  as.character(Y$Capitalization) ) ) ) )

(这将取决于“B”、“MM”和“M”对构建数据的人的实际含义。)

这是我能想到的“正则表达式”模式的更简单用途之一。模式“B$”将匹配字符向量元素中的最后一个 B。因为整个向量将通过这些函数,所以不需要循环。我想可以简单地使用“B”,这将删除“3BB”中的所有B,“6BxB”中的“4BBB”。

于 2012-06-26T19:58:17.157 回答