如何解决如何将具有多列的数据框从宽转换为长 数据
我有一个这样的数据框,它是使用“reshape”函数生成的。我想知道是否有一个与 reshape 函数“相反”的函数,它允许我根据多列将数据框从宽变为长?
我有这个:
ID Date.1 Site.1 Brand.1 Date.2 Site.2 Brand.2
A-001 2021-05-21 Place A Brand A 2021-06-01 Place B Brand C
A-002 2021-05-19 Place D Brand A 2021-05-19 Place D Brand D
但是想要这样:
ID Seq Date Site Brand
A-001 1 2021-05-21 Place A Brand A
A-001 2 2021-06-01 Place B Brand C
A-002 1 2021-05-19 Place D Brand A
A-002 2 2021-05-19 Place D Brand D
谢谢!
解决方法
我们可以使用pivot_longer
library(tdyr)
pivot_longer(df1,cols = -ID,names_to = c(".value","Seq"),names_sep = "\\.")
-输出
# A tibble: 4 x 5
# ID Seq Date Site Brand
# <chr> <chr> <chr> <chr> <chr>
#1 A-001 1 2021-05-21 Place A Brand A
#2 A-001 2 2021-06-01 Place B Brand C
#3 A-002 1 2021-05-19 Place D Brand A
#4 A-002 2 2021-05-19 Place D Brand D
或者使用 reshape
中的 base R
reshape(df1,direction = 'long',varying = list(c(2,5),c(3,6),c(4,7)))
数据
df1 <- structure(list(ID = c("A-001","A-002"),Date.1 = c("2021-05-21","2021-05-19"),Site.1 = c("Place A","Place D"),Brand.1 = c("Brand A","Brand A"),Date.2 = c("2021-06-01",Site.2 = c("Place B",Brand.2 = c("Brand C","Brand D")),class = "data.frame",row.names = c(NA,-2L))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。