Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除r中列中的特定字符_R_Strsplit - Fatal编程技术网

删除r中列中的特定字符

删除r中列中的特定字符,r,strsplit,R,Strsplit,我有一个名为LOAN的表,其中包含一个名为RATE的列,在该列中,观察值以百分比表示,例如14.49%。我如何格式化该表,以便编辑RATE中的所有值,并从条目中删除%,以便对其使用plot函数。我尝试使用strsplit strsplit(LOAN$RATE,"%") 但是得到错误非字符参数打印时显示为字符但R认为不是字符的项目通常是因子类对象。我还猜测,您不会对strsplit将返回的列表输出感到满意。尝试: gsub( "%", "", as.cha

我有一个名为LOAN的表,其中包含一个名为RATE的列,在该列中,观察值以百分比表示,例如14.49%。我如何格式化该表,以便编辑RATE中的所有值,并从条目中删除%,以便对其使用plot函数。我尝试使用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

贷款美元利率这可以通过使用
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建议,但没有任何更改…我尝试修改的列是type
character
。帮助?我也使用了
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