我有一个源自excel文件的数据框。它在列上方有通常的标题,但是有些列中有%符号,我想删除它们。
搜索stackoverflow提供了一些很好的代码来删除矩阵中的百分比,Any way to edit values in a matrix in R?,当我尝试将其应用到我的数据帧时,该代码不起作用
as.numeric(gsub("%", "", my.dataframe))
相反,它只返回一串“NA”,并带有警告信息,说明它们是由强制引入的。当我申请时,
gsub("%", "", my.dataframe))
我得到了“c(...)”形式的值,其中......代表数字,后面跟着我为每一列重现的逗号。没有%是有证据的;如果我可以把它放回原处......我会做饭。
非常感谢任何帮助,谢谢。
答案 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)