从数据框中删除百分比

use*_*827 3 regex r dataframe

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

搜索stackoverflow提供了一些很好的代码来删除矩阵中的百分比,任何方法来编辑R中矩阵中的值?,当我试图将它应用于我的数据帧时,它不起作用

as.numeric(gsub("%", "", my.dataframe))
Run Code Online (Sandbox Code Playgroud)

相反,它只返回一串"NA",并带有警告信息,说明它们是由强制引入的.当我申请时,

gsub("%", "", my.dataframe))
Run Code Online (Sandbox Code Playgroud)

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

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

Jil*_*ina 7

根据@ 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
Run Code Online (Sandbox Code Playgroud)

as.numericsapply调用中添加了结果cols为数字,如果我不使用as.numeric结果将是factor.用它来检查sapply(DF2, class)