我有这样一个数据框:
df
VALUE ABS_CALL DETECTION P-VALUE
1007_s_at "957.729231881542" "P" "0.00486279317241156"
1053_at "320.632701283368" "P" "0.0313356324173416"
117_at "429.842323161046" "P" "0.0170004527476119"
121_at "2395.7364289242" "P" "0.0114473584876183"
1255_g_at "116.493632746934" "A" "0.39799368200131"
1294_at "739.927122116896" "A" "0.0668649772942343"
我想将行名称转换为第一列。目前我使用类似于以下的方法将行名称作为第一列:
d <- df
names <- rownames(d)
rownames(d) <- NULL
data <- cbind(names,d)
有没有一条线可以做到这一点?
9条答案
按热度按时间svujldwt1#
或者你可以使用
tibble
的rownames_to_column
,它的作用和大卫的答案一样:注意:早期的
add_rownames()
函数已被弃用,并将被tibble::rownames_to_column()
取代64jmpszr2#
您可以使用
data.table
包中的setDT
及其keep.rownames = TRUE
参数 * 通过引用**删除行名称并将它们转换为列(而无需使用->
重新分配内存正如@snoram所提到的,您可以为新列指定任何您想要的名称,例如
setDT(df, keep.rownames = "newname")
将添加“newname”作为rows列。ckx4rj1h3#
一行选项是:
41zrol4v4#
或者,您可以创建一个新的 Dataframe (或覆盖当前的 Dataframe ,如下面的示例),这样您就不需要使用任何外部包。但是这种方式可能对大型 Dataframe 效率不高。
falq053o5#
将我的评论移动到上面每个建议的答案中:
你不需要额外的包,这里有一行代码:
kjthegm66#
dplyr::as_tibble(df, rownames = "your_row_name")
会给予你更简单的结果。o75abkj47#
将数据行名改为真实的列
dldeef678#
或者使用
DBI
ssqlRownamesToColumn
s1ag04yj9#