在数据框中移动一列

时间:2015-09-05 14:00:10

标签: r dataframe

我试图将data.frame的最后一列(ID)移动到第一位,如何处理从最后位置移除?我想保持1:长度(df)

df.1 <- subset(df, select=c(ID,1:length(df)))

由于1:length(df),我的代码将ID复制为最后一列。我的尝试是:

df.1 <- subset(df, select=c(ID,1:length(df-1)))

这是错误的。谢谢你的帮助

1 个答案:

答案 0 :(得分:3)

我们使用ncol(df)以及除最后一列-ncol(df)cbind之外的所有其他列对最后一列进行了子集。

df.1 <- cbind(df[ncol(df)], df[-ncol(df)])

即使没有cbind,我们也会连接列索引以将最后一列移到前面。

df.1 <- df[c(ncol(df), 1:(ncol(df)-1))]

或者我们可以使用列名进行子集化。作为&#39; ID&#39;被提到是最后一栏。我们连接了ID&#39;和除了&#39; ID&#39;之外的所有其他列名使用setdiff移动最后一列。

df.1 <- df[c('ID',setdiff(names(df), 'ID'))]

数据

set.seed(24)
df <- as.data.frame(matrix(sample(0:5, 5*6, replace=TRUE), ncol=5))
df$ID <- 1:6