R 在字符串中查找特定字符,将其删除,将其余字符改为数字并除以5
我正在使用R中的一个数据框。它有大约18列,其中有数字。有些单元格后面有一个“P”和一个数字。对于这些情况,我想删除“P”,将其余字符转换成一个数字,然后取该数字除以5R 在字符串中查找特定字符,将其删除,将其余字符改为数字并除以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 >
> 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())