【发布时间】:2016-01-01 06:30:48
【问题描述】:
假设我有一个像这样的data.frame dat
id X_a X_b Y_a Y_b
v1 -0.012758 0.004537 -0.022725 0.005833
v2 -0.016706 0.003332 -0.006948 0.004965
v3 -0.005629 0.006972 -0.010578 0.006069
我希望它变得“聚集”。请注意,X_a 和 X_b 以及 Y_a 和 Y_b 应被收集。期望的结果是:
id X_Y_type X Y
v1 X_Y_a -0.012758 -0.022725
v2 X_Y_a -0.016706 -0.006948
v3 X_Y_a -0.005629 -0.010578
v1 X_Y_b 0.004537 0.005833
v2 X_Y_b 0.003332 0.004965
v3 X_Y_b 0.006972 0.006069
gather()申请了两次不是我想要的:
dat %>%
gather(X_type, X, X_a:X_b) %>%
gather(Y_type, Y, Y_a:Y_b)
id X_type X Y_type Y
v1 X_a -0.012758 Y_a -0.022725
v2 X_a -0.016706 Y_a -0.006948
v3 X_a -0.005629 Y_a -0.010578
v1 X_b 0.004537 Y_a -0.022725
v2 X_b 0.003332 Y_a -0.006948
v3 X_b 0.006972 Y_a -0.010578
v1 X_a -0.012758 Y_b 0.005833
v2 X_a -0.016706 Y_b 0.004965
v3 X_a -0.005629 Y_b 0.006069
v1 X_b 0.004537 Y_b 0.005833
v2 X_b 0.003332 Y_b 0.004965
v3 X_b 0.006972 Y_b 0.006069
我想要 X_a 到 Y_a 和 X_b 到 Y_b 的匹配,所以会是假语法
dat %>%
gather(X_type = Y_type, list(X, Y), list(X_a:X_b, Y_a:Y_b))
有什么提示吗?
【问题讨论】: