删除r中列中的特定字符
我有一个名为LOAN的表,其中包含一个名为RATE的列,在该列中,观察值以百分比表示,例如14.49%。我如何格式化该表,以便编辑RATE中的所有值,并从条目中删除%,以便对其使用plot函数。我尝试使用strsplit删除r中列中的特定字符,r,strsplit,R,Strsplit,我有一个名为LOAN的表,其中包含一个名为RATE的列,在该列中,观察值以百分比表示,例如14.49%。我如何格式化该表,以便编辑RATE中的所有值,并从条目中删除%,以便对其使用plot函数。我尝试使用strsplit strsplit(LOAN$RATE,"%") 但是得到错误非字符参数打印时显示为字符但R认为不是字符的项目通常是因子类对象。我还猜测,您不会对strsplit将返回的列表输出感到满意。尝试: gsub( "%", "", as.cha
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
贷款美元利率这可以通过使用
tidyverse
包中的mutate
动词来实现。在我看来,这更具可读性。
因此,为了举例说明这一点,我创建了一个名为LOAN
的数据集,重点关注利率
,以模拟上述问题
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%
几乎可以肯定,因为贷款美元利率是一个因素。对于我们这些懒惰的打字员来说,
gsub(“%”,”,paste(贷款美元利率))
。我是说懒惰吗?我是说高效,我,贤惠?我想你不该用这个词。除非你说的“德行”是指“懒惰”和/或“挖苦”。这对我不起作用。首先,代码块中的最后一个“n”会产生意外的符号错误…然后我尝试@JoshuaUlrich建议,但没有任何更改…我尝试修改的列是typecharacter
。帮助?我也使用了data$fundraising\u目标,有没有办法一次将其应用于多个列?您可能应该添加一个简短的代码工作原理说明。您需要删除函数(x)后的逗号才能使其工作。如果列速率的每个元素都与不同的字符关联,而不是单个字符,该怎么办?假设说,如果RATE包含以下元素16%,24.5?,27.81=,22.11:如何删除与每个元素相关的不同字符?@Debjyoti使用str|u replace_all(“%|=|::”,“”,RATE)
而不是gsub()
,一切都会好的。请注意,要继续添加模式,只需添加|
和它旁边不需要的字符。对于某些特殊字符,如“*,$”
,需要通过添加“\”对每个字符进行转义。例如,“$”将变成“\$”
,然后添加上面的模式类似于str\u replace\u all(“%\124;=”:\$”,RATE)
。
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