我有一个源自 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.numeric
在 sapply
如果我不使用 as.numeric
,则要求结果 cols 为数字结果将是 factor
.使用 sapply(DF2, class)
检查一下
关于regex - 从数据框中删除百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14385060/