删除r中列中的特定字符

时间:2013-02-05 22:27:39

标签: r strsplit

我有一个名为LOAN的表,其中包含名为RATE的列,其中观察以百分比形式给出,例如14.49%我如何格式化表格,以便编辑所有费率值并从条目中删除%以便我可以使用绘图功能。我尝试使用strsplit。

strsplit(LOAN$RATE,"%")

但得到错误的非字符参数

3 个答案:

答案 0 :(得分:7)

在打印时看起来像是字符的项目,但R认为其他的通常是因子类对象。我也猜测你不会对strsplit将返回的列表输出感到满意尝试:

gsub( "%", "", as.character(LOAN$RATE) n)

出现数字的因素也可能引起混淆:

> factor("14.9%")
[1] 14.9%
Levels: 14.9%
> as.character(factor("14.9%"))
[1] "14.9%"
> gsub("%", "", as.character(factor("14.9%")) )
[1] "14.9"

这是特别令人困惑的,因为print.data.frame删除了引号:

> data.frame(z=factor("14.9%"), zz=factor(14.9))
      z   zz
1 14.9% 14.9

答案 1 :(得分:2)

可以使用mutate包中的tidyverse动词来实现。我认为哪个更易读。 因此,为了说明这一点,我创建了一个名为LOAN的数据集,重点是RATE来模仿上述问题。

library(tidyverse)
LOAN <- data.frame("SN" = 1:4, "Age" = c(21,47,68,33), 
                   "Name" = c("John", "Dora", "Ali", "Marvin"),
                   "RATE" = c('16%', "24.5%", "27.81%", "22.11%"), 
                   stringsAsFactors = FALSE)
head(LOAN)
  SN Age   Name   RATE
1  1  21   John    16%
2  2  47   Dora  24.5%
3  3  68    Ali 27.81%
4  4  33 Marvin 22.11%

随后,mutate允许更改列内容,gsub进行所需的替换(用%替换"",并转换{{1} }列设置为RATE值,以保持数据清理流程可遵循。

numeric

答案 2 :(得分:0)

LOAN $ RATE <-sapply(LOAN $ RATE,function(x),gsub(“%”,“”,x))