functions - r data frame mtcars
¿Cómo agregar una nueva columna a un marco de datos(al frente, no al final)? (6)
Cómo agregar una nueva variable a un marco de datos existente, pero quiero agregar al frente y al final. p.ej. mi dataframe es
b c d
1 2 3
1 2 3
1 2 3
Quiero agregar una nueva variable a, para que el marco de datos se vea como
a b c d
0 1 2 3
0 1 2 3
0 1 2 3
Agregar la columna "a"
> df["a"] <- 0
> df
b c d a
1 1 2 3 0
2 1 2 3 0
3 1 2 3 0
Ordenar por columna usando nombre de columna
> df <- df[c(''a'', ''b'', ''c'', ''d'')]
> df
a b c d
1 0 1 2 3
2 0 1 2 3
3 0 1 2 3
O ordenar por columna usando el índice
> df <- df[colnames(df)[c(4,1:3)]]
> df
a b c d
1 0 1 2 3
2 0 1 2 3
3 0 1 2 3
Las respuestas anteriores muestran 3 enfoques
- Al crear un nuevo marco de datos
- Al usar "cbind"
- Al agregar la columna "a", y ordenar el marco de datos por columnas usando nombres de columna o índices
Déjame mostrar el enfoque # 4 "Al usar" cbind "y" rename "que funciona para mi caso
1. Crear marco de datos
df <- data.frame(b = c(1, 1, 1), c = c(2, 2, 2), d = c(3, 3, 3))
2. Obtener valores para la columna "nueva"
new_column = c(0, 0, 0)
3. Combine la columna "nueva" con la existente
df <- cbind(new_column, df)
4. Cambie el nombre de la columna "nueva"
colnames(df)[1] <- "a"
Si desea hacerlo de manera tidyverse
, intente add_column
from tibble
, que le permite especificar dónde colocar la nueva columna con el parámetro .before
o .after
:
library(tibble)
df <- data.frame(b = c(1, 1, 1), c = c(2, 2, 2), d = c(3, 3, 3))
add_column(df, a = 0, .before = 1)
# a b c d
# 1 0 1 2 3
# 2 0 1 2 3
# 3 0 1 2 3
Use cbind
por ejemplo
df <- data.frame(b = runif(6), c = rnorm(6))
cbind(a = 0, df)
dando:
> cbind(a = 0, df)
a b c
1 0 0.5437436 -0.1374967
2 0 0.5634469 -1.0777253
3 0 0.9018029 -0.8749269
4 0 0.1649184 -0.4720979
5 0 0.6992595 0.6219001
6 0 0.6907937 -1.7416569
cbind inherents orden por su orden de argumento.
El usuario su primera columna (s) como su primer argumento
cbind (fst_col, df)
fst_col df_col1 df_col2
1 0 0.2 -0.1
2 0 0.2 -0.1
3 0 0.2 -0.1
4 0 0.2 -0.1
5 0 0.2 -0.1
cbind (df, last_col)
df_col1 df_col2 last_col
1 0.2 -0.1 0
2 0.2 -0.1 0
3 0.2 -0.1 0
4 0.2 -0.1 0
5 0.2 -0.1 0
df <- data.frame(b = c(1, 1, 1), c = c(2, 2, 2), d = c(3, 3, 3))
df
## b c d
## 1 1 2 3
## 2 1 2 3
## 3 1 2 3
df <- data.frame(a = c(0, 0, 0), df)
df
## a b c d
## 1 0 1 2 3
## 2 0 1 2 3
## 3 0 1 2 3