R 如果不是。。。在这里使用正确的函数?
我试图使用ifelse在数据框中填充一个新列。 如果字符串长度大于3,我想提取列中字符串的最后几位。如果字符字符串较短,我只希望它给出-1 我已经知道如果字符串长度超过3个字符,如何提取字符串的最后一个字符R 如果不是。。。在这里使用正确的函数?,r,R,我试图使用ifelse在数据框中填充一个新列。 如果字符串长度大于3,我想提取列中字符串的最后几位。如果字符字符串较短,我只希望它给出-1 我已经知道如果字符串长度超过3个字符,如何提取字符串的最后一个字符 x<- c("ABCD1", "ABCD2", "ABCD3", "ABCD4", "BC5", "BC6", "BC7") y<-NULL dat<-cbind(x,y) ifelse (nchar(x>3), y=substr(x, 5,5), y=-1)
x<- c("ABCD1", "ABCD2", "ABCD3", "ABCD4", "BC5", "BC6", "BC7")
y<-NULL
dat<-cbind(x,y)
ifelse (nchar(x>3), y=substr(x, 5,5), y=-1)
dat<-cbind(x,y)
view(dat)
我想要的是向量“y”得到数字1,2,3,4,-1,-1,-1
所以我可以在后面绑定这两列。如果你有更好的方法,我将不胜感激 你就快到了!只要长度大于3的字符串长度为4个字符,这将起作用
ifelse(nchar(x)>3,substr(x,5,5),-1)
如果字符串长度可能超过4个字符:
ifelse(nchar(x)>3,sub(“.*([0-9]).*”,“\\1”,x),-1)
我猜您需要一个数据帧。这是你可能需要的-
x <- c("ABCD1", "ABCD2", "ABCD3", "ABCD4", "BC5", "BC6", "BC7")
dat <- data.frame(x, stringsAsFactors = F)
dat$y <- ifelse(nchar(dat$x) > 3, as.numeric(substr(dat$x, 5,5)), -1)
x y
1 ABCD1 1
2 ABCD2 2
3 ABCD3 3
4 ABCD4 4
5 BC5 -1
6 BC6 -1
7 BC7 -1
x始终有一个数字,这是您要提取的字符吗?如果是这样,还有更简单的方法!是的,总是有一个数字,但如果字符串短于3,我希望它添加一个“-1”@d.b,这样就行了!但我仍然不知道为什么我的ifelse没有working@d.b哦我得到了它!谢谢谢谢我只是不明白为什么ifelse不为我工作@Adam K
x <- c("ABCD1", "ABCD2", "ABCD3", "ABCD4", "BC5", "BC6", "BC7")
dat <- data.frame(x, stringsAsFactors = F)
dat$y <- ifelse(nchar(dat$x) > 3, as.numeric(substr(dat$x, 5,5)), -1)
x y
1 ABCD1 1
2 ABCD2 2
3 ABCD3 3
4 ABCD4 4
5 BC5 -1
6 BC6 -1
7 BC7 -1