Por ejemplo, si tengo esto:
n = c(2, 3, 5)
s = c("aa", "bb", "cc")
b = c(TRUE, FALSE, TRUE)
df = data.frame(n, s, b)
n s b
1 2 aa TRUE
2 3 bb FALSE
3 5 cc TRUE
Entonces, ¿cómo combino las dos columnas ny sen una nueva columna con el nombre de xque se ve así:
n s b x
1 2 aa TRUE 2 aa
2 3 bb FALSE 3 bb
3 5 cc TRUE 5 cc
r
dataframe
multiple-columns
r-faq
usuario2654764
fuente
fuente

paste()? En el ejemplo anterior, laxcolumna debe tener datos como2-aa, luego3-bby5-cc.paste(df$n,df$s,sep="-")stiene un valor NA? (No me gusta ver3 NAsidf$s[2]=NA)Para insertar un separador:
fuente
A - Blugar deA-B. ¿Es posible eliminar este espacio extra?paste(df$n,df$s,sep="-")separgumento ...). Sin embargo, la otra respuesta, publicada casi 4 años antes que la suya, responde perfectamente a la pregunta.Como ya se mencionó en los comentarios de Uwe y UseR, una solución general en el
tidyverseformato sería usar el comandounite:fuente
xrepresenta el nombre de la nueva columna que contiene los valores combinados. Piense en dplyr'smutate:df %>% dplyr::mutate(x = "your operations")Se aplican algunos ejemplos con NA y su eliminación utilizando
fuente
tidyrpaquete de reproducir la respuesta esperada de la pregunta original que esto sería una sola línea:tidyr::unite(df, x, n, s, sep = " ", remove = FALSE)[, c(names(df), "x")]. Sin embargo, no veo una razón para hacerlo, ya quedf$x <- paste(df$n,df$s)es mucho más simple.pasteotidyr::unite.Usando
dplyr::mutate:fuente
dplyr::mutate(). Lo siento, solo trato de ser útil, ya no contaminaré el sitio y me abstendré de publicaciones futuras.Podemos usar paste0 :
Si no desea que se introduzca ningún espacio de relleno en el campo concatenado. Esto es más útil si planea usar el campo combinado como una identificación única que representa combinaciones de dos campos.
fuente
En vez de
paste(espacios predeterminados),paste0(forzar la inclusión de la faltaNAcomo personaje) ounite(restringido a 2 columnas y 1 separador),Sugeriría una alternativa tan flexible como
paste0pero más cuidadosa conNA:stringr::str_cCreado el 10/04/2020 por el paquete reprex (v0.3.0)
nota adicional de la
str_cdocumentaciónfuente
paste0(n,"-",s,".",b)ystr_c(n,"-",s,".",b)son exactamente iguales, ambos usan un separador predeterminado que es la cadena vacía''. Tampoco sé por quépastees "ordenado", ¿quieres decir que no te gustan los espacios?paste0ystr_cno son exactamente iguales. eche un vistazo a estos enlaces: (1) rdocumentation.org/packages/stringr/versions/1.3.1/topics/str_c (2) stackoverflow.com/questions/53118271/…str_cdocumentación también podría ser más explícita!).Hay otras excelentes respuestas, pero en el caso de que no sepa los nombres de las columnas o el número de columnas que desea concatenar de antemano, lo siguiente es útil.
fuente