我想反对: Convert row names into first column
在管道链的某处,我想将行名称添加到数据框中,例如,我想使用管道执行以下操作:
rownames(mtcars) <- as.character(1:nrow(mtcars))
所以它看起来像:
library(magrittr)
mtcars <-
mtcars %>%
...???
请注意,@ akrun的答案显示,如果管道用于将数据框强制转换为tbl_df
的函数,则行名称将丢失。
答案 0 :(得分:6)
您可以使用row.names<-
:
mtcars <- mtcars %>% `row.names<-`(as.character(1:nrow(mtcars)))
应该有效。作为演示:
df <- data.frame(x = 1:5, y = 2:6)
df <- df %>% `row.names<-`(letters[1:5])
df
# x y
# a 1 2
# b 2 3
# c 3 4
# d 4 5
# e 5 6
答案 1 :(得分:6)
其他可能性是使用set_rownames
库中的magrittr
别名。
mtcars <-
mtcars %>%
set_rownames(as.character(1:nrow(mtcars)))
答案 2 :(得分:2)
tbl_df
将其更改为行号。因此,我们不需要在更改行名称方面做任何额外的努力。
library(dplyr)
tbl_df(mtcars)
如果我们使用data.table
as.data.table(mtcars)
由于OP评论将名称更改为除行序列之外的其他内容,如果我们使用相同的作业显示在其他帖子中
mtcars %>%
`row.names<-`(c(letters, LETTERS)[1:32]) %>%
group_by(gear) %>%
slice(1)
# mpg cyl disp hp drat wt qsec vs am gear carb
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
#2 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
#3 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
正如我们所看到的,行名称再次变为序列。因此,如果我们将行名称更改为其他内容并执行dplyr链操作,则之前的更改毫无价值。
答案 3 :(得分:1)
实际上如顶部所述“执行相反的操作:将行名称转换为第一列”,即将一列数据转换为行名称,您需要使用tibble::column_to_rownames()
,它非常适合管道。 (我知道您的示例指定了其他内容,即将数字序列转换为行名,您应该使用其他答案)
library(tidyverse)
starwars %>% column_to_rownames("name") %>% head()
#> height mass hair_color skin_color eye_color birth_year
#> Luke Skywalker 172 77 blond fair blue 19.0
#> C-3PO 167 75 <NA> gold yellow 112.0
#> R2-D2 96 32 <NA> white, blue red 33.0
#> Darth Vader 202 136 none white yellow 41.9
#> Leia Organa 150 49 brown light brown 19.0
#> Owen Lars 178 120 brown, grey light blue 52.0
#> gender homeworld species
#> Luke Skywalker male Tatooine Human
#> C-3PO <NA> Tatooine Droid
#> R2-D2 <NA> Naboo Droid
#> Darth Vader male Tatooine Human
#> Leia Organa female Alderaan Human
#> Owen Lars male Tatooine Human
#> films
#> Luke Skywalker Revenge of the Sith, Return of the Jedi, The Empire Strikes Back, A New Hope, The Force Awakens
#> C-3PO Attack of the Clones, The Phantom Menace, Revenge of the Sith, Return of the Jedi, The Empire Strikes Back, A New Hope
#> R2-D2 Attack of the Clones, The Phantom Menace, Revenge of the Sith, Return of the Jedi, The Empire Strikes Back, A New Hope, The Force Awakens
#> Darth Vader Revenge of the Sith, Return of the Jedi, The Empire Strikes Back, A New Hope
#> Leia Organa Revenge of the Sith, Return of the Jedi, The Empire Strikes Back, A New Hope, The Force Awakens
#> Owen Lars Attack of the Clones, Revenge of the Sith, A New Hope
#> vehicles starships
#> Luke Skywalker Snowspeeder, Imperial Speeder Bike X-wing, Imperial shuttle
#> C-3PO
#> R2-D2
#> Darth Vader TIE Advanced x1
#> Leia Organa Imperial Speeder Bike
#> Owen Lars
由reprex package(v0.2.1)于2019-03-18创建