es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Unir los valores de las filas de los marcos de datos con las columnas.

ID <- c(‘1’, ‘2’, ‘3’, ‘4’)
Field_Name <- c(‘Location’, ‘Status’, ‘Company’, ‘Priority’)
Field_Value <- c(‘Arizona’, ‘New’, ‘MyCompany’, ‘Urgent’)

df_1<-data.frame(ID, Field_Name, Field_Value)

field_name_v <- as.factor(df_1$Field_Name)

custom_fields_df2 <- data.frame(matrix(ncol =((length(field_name_v))),
nrow = (nrow(df_1))))
colnames(custom_fields_df2) <- field_name_v
custom_fields_df2$ID <- ID

Este puede parecer una solicitud extraña, pero se necesita para un conjunto de datos bastante grande. Sé que esto probablemente sea súper simple, pero no puedo entenderlo. Si observas df_1, tiene el valor Field_Name que denota un campo personalizado agregado por los usuarios. En el custom_fields_df2, estoy tratando de crear un gráfico horizontal donde cada valor único en df_1$Field_Name sea una columna y el Field_Value se una debajo de la columna donde Field_Name = nombre de columna y ID coincida. Cualquier ayuda sería muy apreciada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener el resultado deseado, puedes utilizar el paquete tidyr en R para pivotar los datos en un formato amplio utilizando la función pivot_wider(). Aquí tienes un ejemplo de código que debería funcionar para el conjunto de datos proporcionado:

    “`{r}
    library(tidyr)

    df_wide <- df_1 %>%
    pivot_wider(names_from = Field_Name, values_from = Field_Value)

    custom_fields_df2 <- df_wide[, c(“ID”, unique(df_1$Field_Name))]


    En este código, `pivot_wider()` convierte el dataframe `df_1` de un formato largo a un formato amplio, creando una columna para cada valor único en `df_1$Field_Name`. El dataframe resultante `df_wide` se vería así:

    A tibble: 4 x 5

    ID Location Status Company Priority

    1 1 Arizona New MyCompa Urgent
    2 2 Arizona New MyCompa Urgent
    3 3 Arizona New MyCompa Urgent
    4 4 Arizona New MyCompa Urgent


    Luego, podemos seleccionar las columnas relevantes (ID y los nombres de campo únicos de `df_1`) y asignarlos a `custom_fields_df2`. El dataframe resultante `custom_fields_df2` se vería así:

    ID Location Status Company Priority
    1 1 Arizona New MyCompany Urgent
    2 2 Arizona New MyCompany Urgent
    3 3 Arizona New MyCompany Urgent
    4 4 Arizona New MyCompany Urgent
    “`

    Observa que los valores en el dataframe resultante custom_fields_df2 se repiten para cada ID. Esto se debe a que esencialmente estamos combinando los valores según la columna ID, y cada ID tiene los mismos valores para cada campo personalizado en este ejemplo.

    ¡Espero que esto te ayude! Hazme saber si tienes alguna pregunta adicional.

Comments are closed.