繁体   English   中英

如何使用 tidyverse 向带有管道的数据帧添加行?

[英]How to add row to a dataframe with a pipe using tidyverse?

例子

考虑这个数据框

 abc
 efg
 hij

(abc 是列)

我想把它转换成

 X
 abc
 efg
 hij

其中 X 现在是主列名,abc 在值中

我试过这个

 df %>% mutate(X = abc)

这把它变成

X
efg
hij

随着 abc 消失

如果您有多个列,则可以执行以下操作:

library(dplyr)

names(df) %>%
  t %>%
  as.data.frame() %>%
  setNames(names(df)) %>%
  bind_rows(df) %>%
  rename_all(~LETTERS[seq_len(ncol(df))])

#    A
#1 abc
#2 efg
#3 hij

对于单列,可以稍微简化一下。

names(df) %>%
  setNames(names(df)) %>%
  bind_rows(df) %>%
  rename(X = abc)

#  X    
# <chr>
#1 abc  
#2 efg  
#3 hij  

我们也可以使用imap来做列名的附加

library(dplyr)
library(purrr)
imap_dfr(df, ~ c(.y, .x)) %>% 
      rename_all(~ 'X')
# A tibble: 3 x 1
#  X    
#  <chr>
#1 abc  
#2 efg  
#3 hij  

数据

df <- structure(list(abc = c("efg", "hij")), class = "data.frame", 
     row.names = c(NA, 
-2L))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM