如何将新列添加到数据框(前端不是)?

Geo*_*Gao 45 r dataframe

如何将新变量添加到现有数据框,但我想添加到前端而不是结尾.例如.我的数据框是

b c d
1 2 3
1 2 3
1 2 3
Run Code Online (Sandbox Code Playgroud)

我想添加一个新的变量a,所以数据框看起来像

a b c d
0 1 2 3
0 1 2 3
0 1 2 3
Run Code Online (Sandbox Code Playgroud)

Rei*_*son 89

使用cbind例如

df <- data.frame(b = runif(6), c = rnorm(6))
cbind(a = 0, df)
Run Code Online (Sandbox Code Playgroud)

赠送:

> 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
Run Code Online (Sandbox Code Playgroud)


Chi*_*til 17

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
Run Code Online (Sandbox Code Playgroud)

  • `data.frame(a = 0, df)` 就足够了。 (5认同)

小智 12

添加列"a"

> df["a"] <- 0
> df
  b c d a
1 1 2 3 0
2 1 2 3 0
3 1 2 3 0
Run Code Online (Sandbox Code Playgroud)

使用列名称按列排序

> 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
Run Code Online (Sandbox Code Playgroud)

或者使用索引按列排序

> 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
Run Code Online (Sandbox Code Playgroud)


And*_*rii 6

前面的答案显示了 3 种方法

  1. 通过创建一个新的数据框
  2. 通过使用“cbind”
  3. 通过添加列“a”,并使用列名称或索引按列对数据框进行排序

让我展示#4 方法“通过使用适用于我的案例的“cbind”和“重命名”

  1. 创建数据框

    df <- data.frame(b = c(1, 1, 1), c = c(2, 2, 2), d = c(3, 3, 3))
    
    Run Code Online (Sandbox Code Playgroud)
  2. 获取“新”列的值

    new_column <- c(0, 0, 0)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将“新”列与现有列合并

    df <- cbind(new_column, df)
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重命名“新”列名称

    colnames(df)[1] <- "a"
    
    Run Code Online (Sandbox Code Playgroud)


mt1*_*022 5

如果要以某种tidyverse方式执行此操作,请尝试add_columntibble,它使您可以使用.before.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
Run Code Online (Sandbox Code Playgroud)