Преобразование имен строк в первый столбец
у меня есть фрейм данных, как это:
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)
есть одна строка для этого?
4 ответов
вы можете и удалить имена строк и преобразовать их в столбец по ссылке (без перераспределения памяти с помощью ->
) через setDT
и с data.table
пакета
library(data.table)
setDT(df, keep.rownames = TRUE)[]
# rn VALUE ABS_CALL DETECTION P.VALUE
# 1: 1 1007_s_at 957.7292 P 0.004862793
# 2: 2 1053_at 320.6327 P 0.031335632
# 3: 3 117_at 429.8423 P 0.017000453
# 4: 4 121_at 2395.7364 P 0.011447358
# 5: 5 1255_g_at 116.4936 A 0.397993682
# 6: 6 1294_at 739.9271 A 0.066864977
или вы можете использовать dplyr
' s add_rownames
что делает то же самое, что и ответ Дэвида:
library(dplyr)
df <- add_rownames(df, "VALUE")
UPDATE (mid-2016):
add_rownames()
устарел и заменяется на tibble::rownames_to_column()
(те же функции, но Хэдли refactored dplyr
немного).
кроме того, вы можете создать новый фрейм данных (или перезаписать текущий, как показано ниже), поэтому вам не нужно использовать какой-либо внешний пакет. Однако этот способ может быть неэффективным с огромными кадрами данных.
df <- data.frame(names = row.names(df), df)