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.
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ónpivot_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))]
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
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 cadaID
. Esto se debe a que esencialmente estamos combinando los valores según la columnaID
, y cadaID
tiene los mismos valores para cada campo personalizado en este ejemplo.¡Espero que esto te ayude! Hazme saber si tienes alguna pregunta adicional.