Jak dodać nową kolumnę do ramki danych (na początku, a nie na końcu)?


Jak dodać nową zmienną do istniejącej ramki danych, ale chcę dodać ją do interfejsu, a nie do końca.
na przykład moja ramka danych to
b c d
1 2 3
1 2 3
1 2 3

Chcę dodać nową zmienną a, aby ramka danych wyglądała tak
a b c d
0 1 2 3
0 1 2 3
0 1 2 3

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Użyj typu
cbind
df <- data.frame(b = runif(6), c = rnorm(6))
cbind(a = 0, df)

dający:
> 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
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

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 3df <- 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
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dodaj kolumnę „a”

> df["a"] <- 0
> df
b c d a
1 1 2 3 0
2 1 2 3 0
3 1 2 3 0
Sortowanie kolumn według nazwy kolumny

> 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
Lub sortuj według kolumn za pomocą indeksu

> 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
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli chcesz to zrobić w sposób
tidyverse
, wypróbuj
add_column
z
tibble
, który pozwala określić, gdzie umieścić nową kolumnę z
parametr .before
lub
.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
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Poprzednie odpowiedzi pokazują 3 podejścia
  • Tworząc nową ramkę danych
  • Z „cbind”
  • Dodając kolumnę „a” i sortując ramkę danych według kolumn przy użyciu nazw kolumn lub indeksów

Pozwólcie, że pokażę Wam podejście # 4 "używając" cbind "i" rename ", co działa w moim przypadku

1. Utwórz ramkę danych
>
df <- data.frame(b = c(1, 1, 1), c = c(2, 2, 2), d = c(3, 3, 3))

2. pobierz wartości dla kolumny „new”
>
new_column = c(0, 0, 0)

3. Połącz kolumnę „nowa” z już istniejącą
>
df <- cbind(new_column, df)

4. zmień nazwę kolumny na „nowa”
>
colnames(df)[1] <- "a"
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

cbind dziedziczy kolejność argumentów.
Użyj swoich pierwszych kolumn jako

pierwszy argument

cbind (fst_col, d.)
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

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się