我有一个名为 LOAN 的表,其中包含名为 RATE 的列,其中观察值以百分比形式给出,例如 14.49% 我如何格式化该表以便编辑 rate 中的所有值并从条目中删除 % 以便我可以使用绘图功能就可以了。我尝试使用strsplit。
strsplit(LOAN$RATE,"%")
但得到错误非字符参数
打印时看起来是字符但 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
这可以使用包中的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
进行所需的替换(%
with ""
)as.numeric()
并将RATE
列转换为numeric
值,从而保持数据清理流程的可遵循性。
LOAN <- LOAN %>% mutate(RATE = as.numeric(gsub("%", "", RATE)))
head(LOAN)
SN Age Name RATE
1 1 21 John 16.00
2 2 47 Dora 24.50
3 3 68 Ali 27.81
4 4 33 Marvin 22.11
尝试:
LOAN$RATE <- sapply(LOAN$RATE, function(x), gsub("%", "", x))