我有一个名为LOAN的表,其中包含名为RATE的列,其中观察以百分比形式给出,例如14.49%我如何格式化表格,以便编辑所有费率值并从条目中删除%以便我可以使用绘图功能。我尝试使用strsplit。
strsplit(LOAN$RATE,"%")
但得到错误的非字符参数
答案 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))