J'ai la trame de donnéesdiviser une colonne de chaîne dans plusieurs colonnes
df=data.frame(x=rnorm(8),y=runif(8),longstring=c("foo_100_Case1","foo_125_Case1","bar_100_Case1","bar_125_Case1","foo_100_Case2","foo_125_Case2","bar_100_Case2","bar_125_Case2"),stringsAsFactors = F)
J'ai besoin de diviser la dernière colonne en trois colonnes, avec delimiter « _ ». Je fais ce qui suit:
a=matrix(unlist(strsplit(df$longstring,"_",fixed=T)),8,3,byrow = T)
df$type=a[,1]
df$point=a[,2]
df$case=a[,3]
Mais je me demande s'il y a un moyen plus facile: la combinaison de strsplit
et unlist
est particulièrement délicate, et il ne fait pas le code très lisible.
La fonction 'separate' dans le package ** tidyr ** a été spécialement écrit pour cela. – joran