在数据框的开头插入列

时间:2014-03-04 17:35:23

标签: r dataframe arff

如何将列添加到R data.frame作为新的第一列,以便所有其他列都移动一列?

像:

a|b|c --> new|a|b|c

我需要这样做,因为我希望row.names成为离散列。这是必需的,因为write.arff函数将data.frame作为输入,但在写入文件时不保留名称。

1 个答案:

答案 0 :(得分:4)

评论中已经回答了这个问题,但为了更清楚地知道答案,这里有一个小例子:

首先,一些示例数据:

(df <- data.frame(A = 1:2, B = 3:4, row.names = c("row1", "row2")))
#      A B
# row1 1 3
# row2 2 4

评论中的建议。请注意,原始row.names仍然是数据的一部分。

cbind(rn = rownames(df), df)
#        rn A B
# row1 row1 1 3
# row2 row2 2 4

您可以通过在row.names = NULL步骤中设置cbind来摆脱这种情况。由于您是cbind data.frames,您还可以在必要时将其他参数传递给data.frame(例如stringsAsFactors = FALSE,如果您不希望“rn”列为一个factor)。

cbind(rn = rownames(df), df, row.names = NULL)
#     rn A B
# 1 row1 1 3
# 2 row2 2 4