regex - 从数据框中删除百分比

标签 regex r dataframe

我有一个源自 excel 文件的数据框。它在列上方有通常的标题,但有些列中有我想删除的 % 符号。

搜索 stackoverflow 提供了一些很好的代码,用于从矩阵中删除百分比,Any way to edit values in a matrix in R? ,当我尝试将其应用于我的数据框时不起作用

as.numeric(gsub("%", "", my.dataframe))

相反,它只返回一串“NA”,并带有一条警告消息,说明它们是由强制引入的。我申请的时候,
gsub("%", "", my.dataframe))

我得到了 "c(...)"形式的值,其中 ... 代表数字,后跟逗号,为我拥有的每一列复制。没有 % 是证据;如果我能把它放回原处……我会做饭。

非常感谢任何帮助,谢谢。

最佳答案

基于@Arun 的评论和想象你的 data.frame 是什么样子的:

> DF <- data.frame(X = paste0(1:5,'%'), 
                   Y = paste0(2*(1:5),'%'),
                   Z = 3*(1:5), stringsAsFactors=FALSE )

> DF # this is how I imagine your data.frame looks like
   X   Y  Z
1 1%  2%  3
2 2%  4%  6
3 3%  6%  9
4 4%  8% 12
5 5% 10% 15

> # Using @Arun's suggestion
> (DF2 <- data.frame(sapply(DF, function(x) as.numeric(gsub("%", "", x)))))
  X  Y  Z
1 1  2  3
2 2  4  6
3 3  6  9
4 4  8 12
5 5 10 15

我加了 as.numericsapply如果我不使用 as.numeric,则要求结果 cols 为数字结果将是 factor .使用 sapply(DF2, class) 检查一下

关于regex - 从数据框中删除百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14385060/

相关文章:

python - 正则表达式不是以点开头或以点结尾

从 ggsurvplot 中的图例中删除变量名称

r - 将重复行计数为新列而不对重复行进行分组

删除数据框列表中的部分列名称 - R

mysql - 喜欢和正则表达式运算符之间的区别

javascript - 正则表达式不正确匹配 % 和 $

c# - 根据文化将日期和时间正则表达式设置为 RegularExpressionValidator

r - 为什么 R for 循环比使用 foreach 慢 10 倍?

python - 如果数据框列中的空值已存在于另一行中,则用相同的值填充该空值

python - 如何使用 Python(使用 pandas 或其他方式)巧妙地匹配两个数据框?