2014-02-19 186 views
1

的另一個字符串我想將字符串「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") 

我已經試過這樣的,但是,「19」總是在字符串的結尾粘貼不管我怎麼變開始和結束參數:

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

開始和結束都是字符串,按照你的方式,使用strsub(前四)和19 strsub(過去兩年)並粘貼 – Ananta

+1

你可以粘貼'df $ a' b/c的期望輸出我沒有關注你之後的內容。 –

回答

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

的邏輯轉換你的對象字符串,然後找到字符「。」位置,之後您可以插入新的字符串temp與您的值,然後再次將您的對象轉換爲十進制。 這個代碼:

intori = 1101.77; 
strori = cstr(intOri); 
intPosPoint = indexof('.'); 
strtmp = left(strori,intPosPoint-1); 
strtmp = strtmp &".19" & right(strori,2); 
decVal = cdec(strtmp); 
+0

它看起來不像是R的答案... – landroni

相關問題