- 已编辑
各位老师,我的数据中某些列含有2L,3ND这种数字和字母的组合,我需要把字母去掉,然后剩下的数字除以2(2L变为2,然后除以2,3ND变为3,然后除以2,不含L或者ND的数字保持不变),但是得到的结果中,含有L的正确了,含有ND和不含字母的部分,完全不对,各位老师对此有什么建议吗?谢谢;代码如下:
library(tidyverse)
dd=as.data.frame(c("2L","3ND",66))
colnames(dd)="vv"
mn=matrix(0,nrow = nrow(dd),ncol = ncol(dd))
for(i in 1:nrow(mn)){
for(j in 1:ncol(mn))
if(str_detect(dd[i,j],"L")==TRUE)
{mn[i,j]=str_replace(dd[i,j],"L","") %>% as.numeric()/5}
else if(str_detect(dd[i,j],"L")==F)
{mn[i,j]=dd[i,j]}
else if(str_detect(dd[i,j],"ND")==TRUE)
{mn[i,j]=str_replace(dd[i,j],"ND","") %>% as.numeric()/5}
else if(str_detect(dd[i,j],"ND")==F)
{mn[i,j]=dd[i,j]}
}
rs=as.data.frame(mn)
###,下面的2.0应为0.6,3.0应为66
> rs
V1
1 0.4
2 2.0
3 3.0