我想粘贴一个字符串" 19"到另一个字符串但确定不同的订单地点。例如,在下面我需要粘贴" 19"在给出b列中的值的情况下从第二位向后计数:" 1101.77"到" 1101.1977"。我怎么能这样做?
df<- structure(list(a = c("1101.77", "10990", "103250", "10.96", "9.906", "10.70",
"11.43", "11.41", "10.48512", "11.19"), b = c(1, 3, 2, 0, 0, 0, 1, 2,
4, 0)), .Names = c("a", "b"), row.names = c(NA, -10L), class = "data.frame")
我已经尝试过这样的事了,&#34; 19&#34;无论我如何更改开始和结束参数,都会始终粘贴在字符串的末尾:
rows <- which(df$b==1)
if(length(rows)>0){
df$a[rows] <- paste(str_sub(df$a[rows],start = 1, end = 6),'19',sep="")
}
答案 0 :(得分:1)
尝试这样的事情:
rows <- which(df$b==1)
if(length(rows)>0){
print(df$a[rows])
df$a[rows] <- paste(str_sub(df$a[rows],start=-7,end=-3),'19',sep="",str_sub(df$a[rows],start = -2, end = -1))
print(df$a[rows])
}
答案 1 :(得分:-1)
逻辑是将对象转换为字符串,然后找到char“。”在此之后,您可以使用您的值插入新的字符串temp,然后再将对象转换为十进制。 这段代码是这样的:
intori = 1101.77;
strori = cstr(intOri);
intPosPoint = indexof('.');
strtmp = left(strori,intPosPoint-1);
strtmp = strtmp &".19" & right(strori,2);
decVal = cdec(strtmp);