如何添加新的列到一个数据框架(前端不结束) ?

如何添加一个新的变量到现有的数据框架,但我想添加到前端不结束。 我的数据框是

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
216845 次浏览
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

使用 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

加上“ a”栏

> 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种方法

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

让我来展示 # 4方法“通过使用“ cbind”和“ rename”,它们对我的案例有效

1. 创建数据框架

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

2. 获取“新”列的值

new_column = c(0, 0, 0)

3. 将“新”列与已有列合并

df <- cbind(new_column, df)

4. 重命名“ new”列名

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

如果希望以 tidyverse的方式执行此操作,请尝试 tibble中的 add_column,它允许您指定将带有 .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

Cbind 通过它的参数顺序来固有顺序。

用你的第一栏作为你的 第一次辩论

Cbind (fst _ coll,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 _ coll)

  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