如何在 Dataframe 中添加新列(添加到前端而不是后端)?

yftpprvb  于 2023-01-22  发布在  其他
关注(0)|答案(6)|浏览(156)

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

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

我想添加一个新变量a,因此 Dataframe 将如下所示

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

fv2wmkja1#

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

vojdkbi02#

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
mpbci0fu

mpbci0fu3#

增加“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
de90aj5v

de90aj5v4#

如果你想以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
ijnw1ujt

ijnw1ujt5#

前面的答案显示了3种方法
1.通过创建新数据框
1.通过使用“cbind”
1.通过添加列“a”,并使用列名或索引按列对数据框进行排序
让我展示第4种方法“使用适合我的情况的“cbind”和“rename
1.创建数据框

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

1.获取“新”列的值

new_column <- c(0, 0, 0)

1.将“新”列与现有列合并

df <- cbind(new_column, df)

1.重命名“新”列名

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

huwehgph6#

cbind的固有值按其参数顺序排序。
将第一列用作第一个参数
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,最后一列)

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

相关问题