¿Cómo agrego una columna en el medio de un marco de datos R? Quiero ver si tengo una columna llamada "Apellido" y luego agregarla como la tercera columna si aún no existe.¿Existe columna y cómo reorganizar columnas en el marco de datos R
Respuesta
1) Prueba de existencia: use% en% en los colnames, p.
> example(data.frame) # to get 'd'
> "fac" %in% colnames(d)
[1] TRUE
> "bar" %in% colnames(d)
[1] FALSE
2) Usted esencialmente tiene que crear una nueva hoja.de.datos de la primera mitad de la edad, su nueva columna, y la segunda mitad:
> bar <- data.frame(d[1:3,1:2], LastName=c("Flim", "Flom", "Flam"), fac=d[1:3,3])
> bar
x y LastName fac
1 1 1 Flim C
2 1 2 Flom A
3 1 3 Flam A
>
o el uso de cbind:
> example(data.frame) # to get 'd'
> bar <- cbind(d[1:3,1:2],LastName=c("Flim", "Flom", "Flam"),fac=d[1:3,3])
> bar
x y LastName fac
1 1 1 Flim A
2 1 2 Flom B
3 1 3 Flam B
Un enfoque es simplemente añadir la columna hasta el final de la trama de datos, y luego utilizar subconjuntos para moverlo a la posición deseada:
d$LastName <- c("Flim", "Flom", "Flam")
bar <- d[c("x", "y", "Lastname", "fac")]
¡Bonito! No había visto ese truco. Y también puede reasignarlo directamente a d. –
Ojalá pudiera combinar esta respuesta con la anterior de Dirk o seleccionarlas como la respuesta seleccionada. ¡Esto es tan obvio que me di una patada por no pensar en eso! –
Gracias eso es muy útil –
De las muchas pequeñas funciones de ayuda que he escrito, esto se usa cada vez que cargo R. Simplemente hace una lista de los nombres e índices de columna, pero la uso constantemente.
##creates an object from a data.frame listing the column names and location
namesind=function(df){
temp1=names(df)
temp2=seq(1,length(temp1))
temp3=data.frame(temp1,temp2)
names(temp3)=c("VAR","COL")
return(temp3)
rm(temp1,temp2,temp3)
}
ni <- namesind
uso ni para ver los números de las columnas. (ni es solo un alias para namesind, nunca uso namesind pero pensé que era un nombre mejor originalmente) Luego, si quieres insertar tu columna en digamos, posición 12, y tu data.frame se llama bob con 20 columnas, sería .
bob2 < - data.frame (bob [, 1: 11], newcolumn, bob [, 12: 20]
aunque me ha gustado el complemento en el extremo y reorganizar respuesta de Hadley, así
Siempre pensé que algo como append() [aunque desafortunado el nombre es] debería ser una función genérica
## redefine append() as generic function
append.default <- append
append <- `body<-`(args(append),value=quote(UseMethod("append")))
append.data.frame <- function(x,values,after=length(x))
`row.names<-`(data.frame(append.default(x,values,after)),
row.names(x))
## apply the function
d <- (if(!"LastName" %in% names(d))
append(d,values=list(LastName=c("Flim","Flom","Flam")),after=2) else d)
La respuesta de Dirk Eddelbuettel funciona, pero no necesita indicar números de fila ni especificar entradas en la columna de apellido. Este código debe hacerlo por una trama de datos llamado df
:
if(!("LastName" %in% names(df))){
df <- cbind(df[1:2],LastName=NA,df[3:length(df)])
}
(el valor predeterminado es LastName
-NA
, pero se puede utilizar con la misma facilidad "LastName='Smith'
")
- 1. Reorganizar varias columnas en un conjunto de datos en una columna usando R
- 2. Identificación de columnas duplicadas en un marco de datos R
- 3. cómo trazar todas las columnas de un marco de datos en R
- 4. ¿Cómo reorganizar las columnas de Mysql?
- 5. Reformar el marco de datos para convertir factores en columnas en R
- 6. Reemplazar el contenido de la columna de factores en el marco de datos R
- 7. Regrese cada columna en un marco de datos en un vector en R
- 8. ¿Cómo debo tomar el máximo de 2 columnas en un marco de datos y convertirlo en otra columna?
- 9. En R, ¿por qué la selección de filas de un marco de datos devuelve datos como un vector si el marco de datos tiene solo una columna?
- 10. R: perder nombres de columna al agregar filas a un marco de datos vacío
- 11. Cómo agregar una columna en un marco de datos en R
- 12. Extraiga elementos de fecha de POSIXlt y colóquelos en el marco de datos en R
- 13. Reorganizar columnas en la Fundación Zurb
- 14. R iterar sobre columnas trama de datos
- 15. R: Encuentre las columnas faltantes, agregue al marco de datos si falta
- 16. Cómo agregar una columna en el marco de datos dentro de una función
- 17. R: Trazar gráficos de cajas múltiples usando columnas del marco de datos
- 18. Pegar juntos cada par de columnas en un marco de datos en R?
- 19. Excluyendo columnas de un marco de datos basado en sumas de columna
- 20. ¿Cómo eliminar la primera fila de un marco de datos en R?
- 21. Cómo ordenar un marco de datos en R
- 22. R evaluar cadena como marco de datos
- 23. Aplicar pnorm a columnas de un marco de datos
- 24. ¿Hay alguna manera fácil de reorganizar columnas tablix en el modo de diseño SSRS?
- 25. ¿cómo busco columnas con el mismo nombre, agrego los valores de columna y reemplazo estas columnas con el mismo nombre por su suma? Uso de R
- 26. R: ¿cómo eliminar columnas en una tabla de datos?
- 27. División de columnas por columnas en R
- 28. X. en los nombres de mi columna de un marco de datos R
- 29. Reemplazar los números en la columna del marco de datos en R?
- 30. Extracción de columnas específicas de un marco de datos
lo recomiendo contra el uso de cbind como la semántica son bastante complicadas: dependiendo de la entrada, puede obtener una matriz o un data.frame – hadley