Hi, why would this simple procedure not work?
--- snip --- mydf <- data.frame(id_station = 1234, string_data = c(2024, 12, 1, 0, 0), rainfall_value= 55) mydf$string_data <- as.factor(mydf$string_data) values<-as.integer(levels(mydf$string_data)) for (i in 1:length(values)) { assign(paste("VAR_", i, sep=""), values[i]) } --- snip --- Best, Kimmo to, 2024-03-28 kello 14:17 +0000, Ebert,Timothy Aaron kirjoitti: > Here are some pieces of working code. I assume you want the second one or > the third one that is functionally the same but all in one statement. I > do not understand why it is a factor, but I will assume that there is a > current and future reason for that. This means I cannot alter the > string_data variable, or you can simplify by not making the variable a > factor only to turn it back into character. > > mydf <- data.frame(id_station = 1234, string_data = c(2024, 12, 1, 0, 0), > rainfall_value= 55) > mydf$string_data <- as.factor(mydf$string_data) > > mydf <- data.frame(id_station = 1234, string_data = "2024, 12, 1, 0, 0", > rainfall_value= 55) > mydf$string_data <- as.factor(mydf$string_data) > > mydf <- data.frame(id_station = 1234, string_data = as.factor("2024, 12, > 1, 0, 0"), rainfall_value= 55) > > mydf <- data.frame(id_station = 1234, string_data = as.factor("2024, 12, > 1, 0, 0"), rainfall_value= 55) > mydf$string_data2 <- as.character(mydf$string_data) > > #I assume there are many records in the data frame and your example is > for demonstration only. > #I cannot assume that all records are the same, though you may be able to > simplify if that is true. > #Split the string based on commas. > split_values <- strsplit(mydf$string_data2, ",") > > # find the maximum string length > max_length <- max(lengths(split_values)) > > # Add new variables to the data frame > for (i in 1:max_length) { > new_var_name <- paste0("VAR_", i) > mydf[[new_var_name]] <- sapply(split_values, function(x) > ifelse(length(x) >= i, x[i], NA)) > } > > # Convert to numeric > for (i in 1:max_length) { > new_var_name <- paste0("VAR_", i) > mydf[[new_var_name]] <- as.numeric(mydf[[new_var_name]]) > } > # remove trash > mydf <- mydf[,-4] > # Provide more useful names > colnames(mydf) <- c("id_station", "string_data", "rainfall_mm", "Year", > "Month", "Day", "hour", "minute") > > Regards, > Tim > > -----Original Message----- > From: R-help <r-help-boun...@r-project.org> On Behalf Of Stefano Sofia > Sent: Thursday, March 28, 2024 7:48 AM > To: Fabio D'Agostino <dagostinof...@gmail.com>; r-help@R-project.org > Subject: Re: [R] split a factor into single elements > > [External Email] > > Sorry for my hurry. > > The correct reproducible code is different from the initial one. The > correct example is > > > mydf <- data.frame(id_station = 1234, string_data = as.factor(2024, 12, > 1, 0, 0), rainfall_value= 55) > > > In this case mydf$string_data is a factor, but of length 1 (and not 5 > like in the initial example). > > Therefore the suggestion offered by Fabio does not work. > > > Any suggestion? > > Sorry again for my mistake > > Stefano > > > > (oo) > --oOO--( )--OOo-------------------------------------- > Stefano Sofia PhD > Civil Protection - Marche Region - Italy Meteo Section Snow Section Via > del Colle Ameno 5 > 60126 Torrette di Ancona, Ancona (AN) > Uff: +39 071 806 7743 > E-mail: stefano.so...@regione.marche.it > ---Oo---------oO---------------------------------------- > > > ________________________________ > Da: Fabio D'Agostino <dagostinof...@gmail.com> > Inviato: gioved 28 marzo 2024 12:20 > A: Stefano Sofia; r-help@R-project.org > Oggetto: Re: [R] split a factor into single elements > > > Non si ricevono spesso messaggi di posta elettronica da > dagostinof...@gmail.com. Informazioni sul perch > importante<https://aka.ms/LearnAboutSenderIdentification> > > Hi Stefano, > maybe something like this can help you? > > myfactor <- as.factor(c(2024, 2, 1, 0, 0)) > > # Convert factor values to integers > first_element <- as.integer(as.character(myfactor)[1]) > second_element <- as.integer(as.character(myfactor)[2]) > third_element <- as.integer(as.character(myfactor)[3]) > > # Print the results > first_element > [1] 2024 > second_element > [1] 2 > third_element > [1] 1 > > # Check the type of the object > typeof(first_element) > [1] "integer" > > Fabio > > Il giorno gio 28 mar 2024 alle ore 11:29 Stefano Sofia > <stefano.so...@regione.marche.it<mailto:stefano.so...@regione.marche.it>> > ha scritto: > Dear R-list users, > > forgive me for this silly question, I did my best to find a solution with > no success. > > Suppose I have a factor type like > > > myfactor <- as.factor(2024, 2, 1, 0, 0) > > > There are no characters (and therefore strsplit for eample does not > work). > > I need to store separately the 1st, 2nd and 3rd elements as integers. How > can I do? > > > Thank you for your help > > Stefano > > > (oo) > --oOO--( )--OOo-------------------------------------- > Stefano Sofia PhD > Civil Protection - Marche Region - Italy Meteo Section Snow Section Via > del Colle Ameno 5 > 60126 Torrette di Ancona, Ancona (AN) > Uff: +39 071 806 7743 > E-mail: > stefano.so...@regione.marche.it<mailto:stefano.so...@regione.marche.it> > ---Oo---------oO---------------------------------------- > > ________________________________ > > AVVISO IMPORTANTE: Questo messaggio di posta elettronica pu contenere > informazioni confidenziali, pertanto destinato solo a persone > autorizzate alla ricezione. I messaggi di posta elettronica per i client > di Regione Marche possono contenere informazioni confidenziali e con > privilegi legali. Se non si il destinatario specificato, non leggere, > copiare, inoltrare o archiviare questo messaggio. Se si ricevuto questo > messaggio per errore, inoltrarlo al mittente ed eliminarlo completamente > dal sistema del proprio computer. Ai sensi dell'art. 6 della DGR n. > 1394/2008 si segnala che, in caso di necessit ed urgenza, la risposta al > presente messaggio di posta elettronica pu essere visionata da persone > estranee al destinatario. > IMPORTANT NOTICE: This e-mail message is intended to be received only by > persons entitled to receive the confidential information it may contain. > E-mail messages to clients of Regione Marche may contain information that > is confidential and legally privileged. Please do not read, copy, > forward, or store this message unless you are an intended recipient of > it. If you have received this message in error, please forward it to the > sender and delete it completely from your computer system. > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org<mailto:R-help@r-project.org> mailing list -- To > UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help > > > PLEASE do read the posting guide > http://www.r-project.org/posting-guide.html< > http://www.r-project.org/posting-guide.html> > and provide commented, minimal, self-contained, reproducible code. > > ________________________________ > > AVVISO IMPORTANTE: Questo messaggio di posta elettronica pu contenere > informazioni confidenziali, pertanto destinato solo a persone > autorizzate alla ricezione. I messaggi di posta elettronica per i client > di Regione Marche possono contenere informazioni confidenziali e con > privilegi legali. Se non si il destinatario specificato, non leggere, > copiare, inoltrare o archiviare questo messaggio. Se si ricevuto questo > messaggio per errore, inoltrarlo al mittente ed eliminarlo completamente > dal sistema del proprio computer. Ai sensi dell'art. 6 della DGR n. > 1394/2008 si segnala che, in caso di necessit ed urgenza, la risposta al > presente messaggio di posta elettronica pu essere visionata da persone > estranee al destinatario. > IMPORTANT NOTICE: This e-mail message is intended to be received only by > persons entitled to receive the confidential information it may contain. > E-mail messages to clients of Regione Marche may contain information that > is confidential and legally privileged. Please do not read, copy, > forward, or store this message unless you are an intended recipient of > it. If you have received this message in error, please forward it to the > sender and delete it completely from your computer system. > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.