我的数据格式如下:
在A栏:
String1__String2__String3
在B栏:
Value
我想在第一个分隔符之后将Value粘贴到String中:
String1__Value__String2__String3
我现在使用的代码的关键部分(我粘贴值的地方)是以下行:
df2 <-cbind(df[1],apply(df[,2:ncol(df)],2,function(i)ifelse(is.na(i), NA, paste(df[,1],i,sep="_"))))
使用此代码,它会在字符串后附加值,如下所示:
String1__String2__String3__Value
是否有一种简单的方法可以重新排列,以便将值粘贴到正确的位置。或者我是否必须重做完整的代码?
谢谢
更新,例如:
A栏:
Jennifer__DoesSomething__inaCity
B栏:
2
结果现在:
Jennifer__DoesSomething__inaCity__2
期望的结果:
Jennifer__2__DoesSomething__inaCity
字符串Jennifer,DoesSomething,inaCity更改并且长度不同。只有分隔符保持不变。我想在第一个分隔符后粘贴。
谢谢!
答案 0 :(得分:2)
这是一个想法。使用sub
我们只替换第一个看到的模式。因此,使用mapply
,我们将第一列中的所有数字替换为第二列上的相应字符串。
mapply(function(x, y) sub('__', paste0('__', y, '__'), x), df$v1, df$v2)
# atsfs__dsfgg__sdgsdg eeee__FFFF__GGGG
#"atsfs__3__dsfgg__sdgsdg" "eeee__5__FFFF__GGGG"
数据强>
dput(df)
structure(list(v1 = c("atsfs__dsfgg__sdgsdg", "eeee__FFFF__GGGG"
), v2 = c(3, 5)), .Names = c("v1", "v2"), row.names = c(NA, -2L
), class = "data.frame")