[英]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.