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

时间:2013-10-22 03:00:27

标签: r dataframe

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

b c d
1 2 3
1 2 3
1 2 3

我想添加一个新变量a,因此数据框看起来像

a b c d
0 1 2 3
0 1 2 3
0 1 2 3

6 个答案:

答案 0 :(得分:85)

使用cbind例如

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

,并提供:

> 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

答案 1 :(得分: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

答案 2 :(得分:11)

  

添加列&#34; a&#34;

> df["a"] <- 0
> df
  b c d a
1 1 2 3 0
2 1 2 3 0
3 1 2 3 0
  

使用列名称

按列排序
> 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
  

或使用索引

按列排序
> 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

答案 3 :(得分:4)

如果您想以tidyverse方式执行此操作,请尝试add_column中的tibble,这样您就可以指定新列的放置位置.before或{ {1}}参数:

.after

答案 4 :(得分:2)

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

  1. 创建新数据框
  2. 使用&#34; cbind&#34;
  3. 添加列&#34; a&#34;,并使用列名或索引按列对数据进行排序
  4. 让我展示#4方法&#34;通过使用&#34; cbind&#34;和&#34;重命名&#34;这适用于我的案例

    1。创建数据框

    df <- data.frame(b = c(1, 1, 1), c = c(2, 2, 2), d = c(3, 3, 3))

    2。获取&#34; new&#34;的值柱

    new_column = c(0, 0, 0)

    3。结合&#34; new&#34;列已存在

    df <- cbind(new_column, df)

    4。重命名&#34; new&#34;列名

    colnames(df)[1] <- "a"

答案 5 :(得分:1)

cbind inherents按其参数顺序排序。

将您的第一列用作第一个参数

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