libreria - dplyr mutate en R-agregar columna como concat de columnas
mutate dplyr (2)
Añadiendo a la respuesta de Pablo. Si desea ordenar las filas, puede intentar order . Aquí hay un ejemplo:
res1 <- mutate(states.df,
concated_column = apply(states.df[order(name, region, division), ], 1,
function(x) paste0(x, collapse = "_")))
Aquí, el orden ordena el data.frame states.df por nombre y luego rompe el vínculo por región y división
Tengo un problema con el uso de la función mutate{dplyr}
con el objetivo de agregar una nueva columna al marco de datos. Quiero que una nueva columna sea del tipo de carácter y conste de "concat" de palabras ordenadas de otras columnas (que también son del tipo de carácter). Por ejemplo, para el siguiente marco de datos:
> library(datasets)
> states.df <- data.frame(name = as.character(state.name),
+ region = as.character(state.region),
+ division = as.character(state.division))
>
> head(states.df, 3)
name region division
1 Alabama South East South Central
2 Alaska West Pacific
3 Arizona West Mountain
Me gustaría obtener una nueva columna con el siguiente primer elemento:
"Alamaba_East South Central_South"
Intenté esto:
mutate(states.df,
concated_column = paste0(sort(name, region, division), collapse="_"))
Pero recibí un error:
Error in sort(1:50, c(2L, 4L, 4L, 2L, 4L, 4L, 1L, 2L, 2L, 2L, 4L, 4L, :
''decreasing'' must be a length-1 logical vector.
Did you intend to set ''partial''?
Gracias por cualquier ayuda por adelantado!
Necesitas usar sep =
no collapse =
, y ¿por qué usar sort
? Y utilicé paste
y no paste0
.
library(dplyr)
states.df <- data.frame(name = as.character(state.name),
region = as.character(state.region),
division = as.character(state.division))
res = mutate(states.df,
concated_column = paste(name, region, division, sep = ''_''))
En cuanto a la ordenación, no se utiliza la sort
correcta. Tal vez usted quiere:
as.data.frame(lapply(states.df, sort))
Esto ordena cada columna y crea un nuevo data.frame
con esas columnas.