如何在R中将百分比字符转换为数字
我有带有百分号 (%) 的数据,我想将其转换为数字。将百分比字符转换为数字时遇到问题。例如,我想将“10%”转换为 10%,但
as.numeric("10%")
返回 NA
。你有什么想法吗?
I have data with percent signs (%) that I want to convert into numeric. I run into a problem when converting character of percentage to numeric. E.g. I want to convert "10%" into 10%, but
as.numeric("10%")
returns NA
. Do you have any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
根据定义,10% 不是数字向量。因此,答案 NA 是正确的。您可以通过以下方式将包含这些数字的字符向量转换为数字:
这通过使用 sub 将 % 字符替换为空来实现。
10% is per definition not a numeric vector. Therefore, the answer NA is correct. You can convert a character vector containing these numbers to numeric in this fashion:
This works by using sub to replace the % character by nothing.
删除
“%”
,转换为数字,然后除以100。Remove the
"%"
, convert to numeric, then divide by 100.如果您是
tidyverse
用户(实际上,如果不是),现在readr
包中有一个parse_number
函数:优点是可以泛化到其他常见的字符串格式,例如:
If you're a
tidyverse
user (and actually also if not) there's now aparse_number
function in thereadr
package:The advantage is generalization to other common string formats such as:
首先去掉无关的字符:(
感谢 Paul 提供的示例数据)。
此函数现在处理:前导非数字字符、尾随非数字字符以及保留小数点(如果存在)。
Get rid of the extraneous characters first:
(Thanks to Paul for the example data).
This function now handles: leading non-numeric characters, trailing non-numeric characters, and leaves in the decimal point if present.
我想转换整个列并结合上面的答案。
I wanted to convert an entire column and combined the above answers.
尝试使用:
这也适用于小数:
其想法是符号
%
始终位于字符串的末尾。Try with:
This works also with decimals:
The idea is that the symbol
%
is always at the end of the string.