基于因子列转置数据框
Transposing data frame based on factor column
假设我有一个从 .csv 文件获得的以下格式的数据框:
Measurement Config Value
--------------------------- _
Time A 10 |
Object A 20 | Run 1
Nodes A 30 _|
Time A 8 |
Object A 18 | Run 2
Nodes A 29 _|
Time B 9 |
Object B 20 | Run 3
Nodes B 35 _|
...
在每个 运行 期间有固定数量的 Measurements
,每个 运行 是 运行 与给定的 Config
。
每个 运行 的 Measurements
是固定的(例如,每个 运行 由上面示例中的时间、对象和节点测量组成),但可以有多个 运行 s 用于单个配置(例如,Config A
在上面的示例中是 运行 两次,B
只有一次)
我的主要目标是绘制其中两种测量类型之间的相关性(散点图),例如,绘制 Objects
(x 轴)对 Nodes
(y 轴)并突出显示不同Configs
(颜色)
我认为如果数据框采用以下格式,则可以最好地实现这一点:
Config Time Objects Nodes
--------------------------
A 10 20 30 <- Run 1
A 8 18 29 <- Run 2
B 9 20 35 <- Run 3
即,根据 Measurement
列的因子值创建列,并将相应的 Value
值分配给单元格。
R 中有 "easy" 方法来实现吗?
首先创建一个run
变量:
# option 1:
d$run <- ceiling(seq_along(d$Measurement)/3)
# option 2:
d$run <- 1 + (seq_along(d$Config)-1) %/% 3
然后使用 reshape2
或 data.table
:
中的 dcast
函数重塑为宽幅面
reshape2::dcast(d, Config + run ~ Measurement, value.var = 'Value')
你将得到:
Config run Nodes Object Time
1 A 1 30 20 10
2 A 2 29 18 8
3 B 3 35 20 9
假设我有一个从 .csv 文件获得的以下格式的数据框:
Measurement Config Value
--------------------------- _
Time A 10 |
Object A 20 | Run 1
Nodes A 30 _|
Time A 8 |
Object A 18 | Run 2
Nodes A 29 _|
Time B 9 |
Object B 20 | Run 3
Nodes B 35 _|
...
在每个 运行 期间有固定数量的 Measurements
,每个 运行 是 运行 与给定的 Config
。
每个 运行 的 Measurements
是固定的(例如,每个 运行 由上面示例中的时间、对象和节点测量组成),但可以有多个 运行 s 用于单个配置(例如,Config A
在上面的示例中是 运行 两次,B
只有一次)
我的主要目标是绘制其中两种测量类型之间的相关性(散点图),例如,绘制 Objects
(x 轴)对 Nodes
(y 轴)并突出显示不同Configs
(颜色)
我认为如果数据框采用以下格式,则可以最好地实现这一点:
Config Time Objects Nodes
--------------------------
A 10 20 30 <- Run 1
A 8 18 29 <- Run 2
B 9 20 35 <- Run 3
即,根据 Measurement
列的因子值创建列,并将相应的 Value
值分配给单元格。
R 中有 "easy" 方法来实现吗?
首先创建一个run
变量:
# option 1:
d$run <- ceiling(seq_along(d$Measurement)/3)
# option 2:
d$run <- 1 + (seq_along(d$Config)-1) %/% 3
然后使用 reshape2
或 data.table
:
dcast
函数重塑为宽幅面
reshape2::dcast(d, Config + run ~ Measurement, value.var = 'Value')
你将得到:
Config run Nodes Object Time
1 A 1 30 20 10
2 A 2 29 18 8
3 B 3 35 20 9