r - 如何将数据转换为长/水平格式?
问题描述
正如问题的主题所暗示的那样,我有以下数据集,可能是横截面的。请参阅下面的代码,
W1 W2 W3 (…)
P1 11 12 10 8 13 12 14 21 6
P2 7 6 3 2 7 1 6 3 3
P3 7 11 8 9 10 8 7 13 12
P4 12 8 13 5 9 6 9 13 13
P5 8 5 13 11 6 7 9 14 9
P6 3 3 2 7 6 3 8 6 6
6 rows | 1-10 of 52 columns
假设我们有变量 W 代表周,P 代表产品。我的问题:如何以我拥有带有变量的长数据集的方式转换我的数据集:时间(以周为单位)产品(销售)如下:
Time Product_Number Product_Sales
W1 P1 20
W2 P2 5
(...) (...) (...)
解决方案
如果您更喜欢使用data.table
,另一种解决方案是使用该melt
功能将数据从宽更改为长。使用 Nicolas 的示例数据:
library(data.table)
data <- data.frame(id=c("p1","p2","p3","p4","p5"),
w1=c(11,2,3,5,7),
w2=c(13,5,3,6,7),
w3=c(30,2,3,8,7))
data_wide <- as.data.table(data)
data_long <- melt(data_wide, id.vars = 'id', variable.name = 'weeks', value.name = 'sales')
data_long
#> id weeks sales
#> 1: p1 w1 11
#> 2: p2 w1 2
#> 3: p3 w1 3
#> 4: p4 w1 5
#> 5: p5 w1 7
#> 6: p1 w2 13
#> 7: p2 w2 5
#> 8: p3 w2 3
#> 9: p4 w2 6
#> 10: p5 w2 7
#> 11: p1 w3 30
#> 12: p2 w3 2
#> 13: p3 w3 3
#> 14: p4 w3 8
#> 15: p5 w3 7
由reprex 包于 2021-11-04 创建(v2.0.1)
推荐阅读
- javascript - Spotify API 节点 - 错误的会话
- c# - 使用主窗体填充另一个窗体的数据网格视图
- python - 从多个数据帧中获取整数单元格的总和
- wordpress - 如何将另一个 wordpress 网站的帖子显示到我的 wordpress 网站?
- java - 当片段中的上下文为空时该怎么办
- php - 如何在没有 cron 的情况下自动化数据库表备份
- python - 调度程序使 python 脚本运行但不生成 csv 文件
- c# - 代码优先自动生成的值未创建相应的数据库逻辑
- ios - Unity 在 iPhone 上的 GetCloudProjectId() 崩溃
- json - 我正在尝试在 go 中打印 JSON