2017-06-20 2 views
-3

dataframe en R ressemble à ceAprès spliting valeurs de la colonne et comment attribuer dans la colonne multiple spécifique en utilisant R

**NAME**  | MONTH 
jana| 19-25| jan,mar,sep,dec 
pugal| 45-50| april,may,june 
-- 

et je veux que ma réponse devrait regarder

jana| 19-25| jan 
jana| 19-25| mar 
jana| 19-25| sep 
jana| 19-25| dec 
pugal| 45-50| april 
pugal| 45-50| may 
pugal| 45-50| june 
+0

Je ne suis pas Assurez-vous que ce n'est pas le cas, mais c'est peut-être ce que vous recherchez 'a = data.frame (faire.call (rbind, strsplit (as.caractère (df), '|', fixed = TRUE))) b = as.data. frame (do.call (rbind, appliquer (a, 1, la fonction (x) { do.call (expand.grid, strsplit (x, "*, *")) ' –

Répondre

-1

Cela fait ce que vous voulez

n=c("jana| 19-25| jan,mar,sep,dec", "pugal| 45-50| april,may,june") 

df = data.frame(n) 

a=data.frame(do.call(rbind, strsplit(as.character(df$n),'|',fixed=TRUE))) 
b=as.data.frame(do.call(rbind, apply(a, 1, function(x) { do.call(expand.grid, strsplit(x, " *, *"))}))) 
+0

je m'excuse pour la question de niveau très basique .. Je suis nouveau à R, @S Revero merci de m'avoir aidé. – dass

-1

separate_rows à dplyr peut faire:

library(tidyr) 

DF %>% separate_rows(MONTH) 

Le résultat est:

NAME RANGE MONTH 
1 jana 19-25 jan 
2 jana 19-25 mar 
3 jana 19-25 sep 
4 jana 19-25 dec 
5 pugal 45-50 april 
6 pugal 45-50 may 
7 pugal 45-50 june 

Note: Les données d'entrée présentées dans la question a deux têtes de colonne, mais trois colonnes nous avons donc utilisé ceci:

Lines <- "NAME | RANGE | MONTH 
jana| 19-25| jan,mar,sep,dec 
pugal| 45-50| april,may,june" 

DF <- read.table(text = Lines, header = TRUE, sep = "|", strip.white = TRUE) 
+0

Merci son fonctionnement très bien .... mais je pense que je travaille uniquement avec le install.packages ("tidyr") bibliothèque (tidyr) – dass

+0

Ont résolu maintenant. –