在 R 中将数据帧 reshape 为长格式

标签 r reshape

我正在为 R 中的 reshape 而苦苦挣扎。我有 2 种类型的错误(err 和 rel_err),它们已针对 3 个不同的模型进行计算。这给了我总共 6 个错误变量(即 err_1、err_2、err_3、rel_err_1、rel_err_2 和 rel_err_3)。对于这些类型的错误中的每一种,我都有 3 种不同类型的预测有效性测试(即随机拒绝、回溯、预测)。我想让我的数据集很长,所以我保持 4 种类型的测试很长,同时也使两个错误测量很长。所以最后我将有一个名为 err 的变量和一个名为 rel_err 的变量以及一个 id 变量,用于错误对应的模型(1、2 或 3)

这是我现在的数据:

iter       err_1  rel_err_1      err_2  rel_err_2      err_3  rel_err_3 test_type
1 -0.09385732 -0.2235443 -0.1216982 -0.2898543 -0.1058366 -0.2520759    random
1  0.16141630  0.8575728  0.1418732  0.7537442  0.1584816  0.8419816    back
1  0.16376930  0.8700738  0.1431505  0.7605302  0.1596502  0.8481901    front
1  0.14345986  0.6765194  0.1213689  0.5723444  0.1374676  0.6482615    random
1  0.15890059  0.7435382  0.1589823  0.7439204  0.1608709  0.7527580    back
1  0.14412360  0.6743928  0.1442039  0.6747684  0.1463520  0.6848202    front

这是我希望它的样子:
iter     model    err           rel_err    test_type
1        1        -0.09385732    (#'s)     random
1        2        -0.1216982     (#'s)     random
1        3        -0.1216982     (#'s)     random

然后……

我试过玩弄语法,但不能完全弄清楚 time.variing 参数

非常感谢您提供的任何帮助。

最佳答案

你可以用“困难”的方式做到这一点。为了透明,您可以使用名称。

with( dat, data.frame(iter = rep(iter, 3), 
      model = rep(1:3, each = nrow(dat)),
      err = c(err_1, err_2, err_3), 
      rel_err = c(rel_err_1, rel_err_2, rel_err_3), 
      test_type = rep(test_type, 3)) )

或者,为了简洁起见,索引。
data.frame(iter = dat[,1], model = rep(1:3, each = nrow(dat)), err = dat[,c(2, 4, 6)], 
          rel_err = dat[,c(3, 5, 7)], test_type = dat[,8]) )

如果您有很多列,那么困难的方法可能涉及 grep 列名。

这种“艰难”的方式与 reshape 一样简洁并且不需要考虑如何使用命令。有时我只是跳过思考 reshape .

关于在 R 中将数据帧 reshape 为长格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13061737/

相关文章:

java - 在 javacv 中 reshape IplImage

sas - 在具有许多变量的 SAS 中将大型数据集从长到宽 reshape

r - Select/Deselect All 按钮用于 Shiny 的变量选择

r - 如何以特定格式对数组的奇数和偶数进行排序

numpy - numpy reshape 会创建副本吗?

R:使用共享名称模式的多列将数据 reshape 为更长的格式

python - reshape Pandas 数据框堆栈/取消堆栈

r - 适用于R的Stargazer软件包中的自定义型号名称

python - Stata 与 R/Python 中数据帧的线性代数

r - 如果组中的行数超过 X 个观察值,则随机抽样 X 个行数