从数据框中删除百分比

时间:2013-01-17 17:49:07

标签: 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(...)”形式的值,其中......代表数字,后面跟着我为每一列重现的逗号。没有%是有证据的;如果我可以把它放回原处......我会做饭。

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

1 个答案:

答案 0 :(得分: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

我在as.numeric调用中添加了sapply,因此生成的cols为数字,如果我不使用as.numeric,结果将为factor。使用sapply(DF2, class)

查看