r语言 - 具有不同列名的Pivot数据框



我有一个类似的数据框架:

> dput(df)
structure(list(Name = "Jon", Age = 23, Name1 = "Jessica", Age1 = 13, 
Name2 = "Martin", Age2 = 54), class = "data.frame", row.names = c(NA, 
-1L))

我想把它拉长,这样所有的名字都在一列中,所有的年龄都在另一列中。我发现这很难做到,因为列名不同。

所需输出:

Name Age
1     Jon  23
2 Jessica  13
3  Martin  54

谢谢!

library(tidyr)
pivot_longer(df, everything(),
names_pattern = "([^0-9]+)[0-9]*$",
names_to = ".value")
# # A tibble: 3 x 2
#   Name      Age
#   <chr>   <dbl>
# 1 Jon        23
# 2 Jessica    13
# 3 Martin     54

或与data.table::melt:

data.table::melt(
as.data.table(df),
measure.vars = patterns(Name="^Name", Age="^Age"))
#    variable    Name   Age
#      <fctr>  <char> <num>
# 1:        1     Jon    23
# 2:        2 Jessica    13
# 3:        3  Martin    54

(我们可以很容易地去掉variable列)

最新更新