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-bounces at r-project.org> On Behalf Of Stefano
Sofia
> Sent: Thursday, March 28, 2024 7:48 AM
> To: Fabio D'Agostino <dagostinofabi at gmail.com>; r-help at
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.sofia at regione.marche.it
> ---Oo---------oO----------------------------------------
>
>
> ________________________________
> Da: Fabio D'Agostino <dagostinofabi at gmail.com>
> Inviato: gioved? 28 marzo 2024 12:20
> A: Stefano Sofia; r-help at R-project.org
> Oggetto: Re: [R] split a factor into single elements
>
>
> Non si ricevono spesso messaggi di posta elettronica da
> dagostinofabi at 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.sofia at regione.marche.it<mailto:stefano.sofia at
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.sofia at regione.marche.it<mailto:stefano.sofia at
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 at r-project.org<mailto:R-help at 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 at 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.