Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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 在字符串中查找特定字符,将其删除,将其余字符改为数字并除以5_R_String_Character - Fatal编程技术网

R 在字符串中查找特定字符,将其删除,将其余字符改为数字并除以5

R 在字符串中查找特定字符,将其删除,将其余字符改为数字并除以5,r,string,character,R,String,Character,我正在使用R中的一个数据框。它有大约18列,其中有数字。有些单元格后面有一个“P”和一个数字。对于这些情况,我想删除“P”,将其余字符转换成一个数字,然后取该数字除以5 > Replace<-data.frame(group=c("P4", "25", "4", "P1", "25")) > Replace group 1 P4 2 25 3 4 4 P1 5 25 >

我正在使用R中的一个数据框。它有大约18列,其中有数字。有些单元格后面有一个“P”和一个数字。对于这些情况,我想删除“P”,将其余字符转换成一个数字,然后取该数字除以5

    > Replace<-data.frame(group=c("P4", "25", "4", "P1", "25"))
    > Replace
    group
    1    P4
    2    25
    3     4
    4    P1
    5    25
    > 
>替换
组
1 P4
2    25
3     4
4 P1
5    25
> 
例如,在“Replace”中,我希望“P4”为“0.8”,而“P1”为“0.2”。但“25”、“4”和“25”应该保持不变。谢谢你的帮助

库(dplyr)
library(dplyr)
Replace <- mutate(Replace, group = ifelse(grepl("P", group),
                  as.numeric(gsub("P", "", group))/5, as.character(group)))
替换
库(dplyr)

替换为.numeric(gsub(pattern=“P”,replacement=”“,Replace$group))/5))
。然后将其应用于所有列。括号应该放在哪里,这样就不会将每个列除以5?您需要使用ifelse@Psidom的答案是最好的,并且使用了
dplyr
包-我建议使用它。
sapply(gsub('P','1/5*',Replace$group),function(x)eval(parse(text=x))
作为.numeric(gsub(pattern=“P',replacement=”“,Replace$group))/5))
。然后将其应用于所有列。括号应该放在哪里,这样就不会将每个列除以5?您需要使用ifelse@Psidom的答案是最好的,它使用了
dplyr
包——我建议使用它。
sappy(gsub('P','1/5*',Replace$group),function(x)eval(parse(text=x))
这是完美的,工作得很好。我想我可以使用tidyr一次折叠所有列。再次感谢!您可以使用
mutate\u each()
函数<代码>每种(替换,funs(ifelse(grepl(“P”),as.numeric(gsub(“P”),as.character()))/5,as.character()))
这很完美,工作起来很漂亮。我想我可以使用tidyr一次折叠所有列。再次感谢!您可以使用
mutate\u each()
函数<代码>每种(替换,funs(ifelse(grepl(“P”),as.numeric(gsub(“P”),as.character())/5,as.character())