将行名称转换为数据框列

时间:2014-07-18 18:21:51

标签: r dataframe

我希望能够访问b0.e7,c0.14,...,f8.d4。但是现在这些不在列中,而是"行名称"。如何将行名称1,2,3,4,5,6,7和b0.e7,c0.14,...,f8.d4作为它自己的列。感谢您的帮助。

df=as.data.frame(c)
df = subset(df, c>7)
df
        c
b0.e7  11
c0.14   8
f8.d1  10
f8.d2   9
f8.d3  11
f8.d4  12

3 个答案:

答案 0 :(得分:2)

试试这个。第一行分配一个新列,它只是数据框的当前行名。第二行将行名重置为NULL,从而生成序列。

> df$new <- rownames(df)
> rownames(df) <- NULL

哪个应该导致

> df
#    c   new
# 1 11 b0.e7
# 2  8 c0.14
# 3 10 f8.d1
# 4  9 f8.d2
# 5 11 f8.d3
# 6 12 f8.d4

如果需要df[, c(2, 1)]

,您可以撤消列顺序

答案 1 :(得分:1)

您可以利用cbind.data.frame可以使用来自data.frame的参数的事实,其中一个参数是row.names。该参数可以设置为NULL,这意味着比Richard提出的更直接的方法是:

cbind(rn = rownames(mydf), mydf, row.names = NULL)
#      rn  c
# 1 b0.e7 11
# 2 c0.14  8
# 3 f8.d1 10
# 4 f8.d2  9
# 5 f8.d3 11
# 6 f8.d4 12

答案 2 :(得分:-1)

您也可以试试这个。

rows = row.names(df)
df1 = cbind(rows,df)