假设我有数据集

dat=structure(list(X0_B02 = c(108L, 280L, 362L, 918L, 141L), X0_B03 = c(398L, 
733L, 725L, 1116L, 421L), X0_B04 = c(214L, 464L, 692L, 1394L, 
238L), X1_B02 = c(480L, 484L, 544L, 911L, 380L), X1_B03 = c(760L, 
856L, 849L, 1110L, 611L), X1_B04 = c(546L, 599L, 737L, 1348L, 
431L)), class = "data.frame", row.names = c(NA, -5L))

0_, 1_这些是变量的前缀.0_u表示零天,1_u表示第一天,2_u表示变量bo2, bo3, bo4观测的第二天.

day B02 B03 B04
0   108 398 214
0   280 733 464
0   362 725 692
0   918 1116    1394
0   141 421 238
1   480 760 546
1   484 856 599
1   544 849 737
1   911 1110    1348
1   380 611 431

使用rbind函数的方法是执行它,还是为了获得所需的输出,我们需要另一种方法?

推荐答案

使用tidyverse,你可以使用pivot_longernames_pattern.这将允许"X"后的数字用于新的day列,下划线后的单词用于其他列名.

library(tidyr)

pivot_longer(
  dat,
  cols = everything(),
  names_to = c("day", ".value"),
  names_pattern = "X(\\d+)_(\\w+)"
)

Output

   day     B02   B03   B04
   <chr> <int> <int> <int>
 1 0       108   398   214
 2 1       480   760   546
 3 0       280   733   464
 4 1       484   856   599
 5 0       362   725   692
 6 1       544   849   737
 7 0       918  1116  1394
 8 1       911  1110  1348
 9 0       141   421   238
10 1       380   611   431

R相关问答推荐

按崩溃类别分类的指数

使用ggplot 2根据R中的类别排列Likert比例gplot

从有序数据中随机抽样

使用gggrassure减少地块之间的空间

使用geom_segment()对y轴排序

移除仪表板Quarto中顶盖和车身之间的白色区域

在使用tidyModels和XGBoost的二进制分类机器学习任务中,所有模型都失败

以相同的方式对每个表进行排序

合并后返回列表的数据帧列表

展开对数比例绘图的轴(添加填充)

从多面条形图中删除可变部分

如何使这些react 表对象相互独立?

为什么这个表格格罗布不打印?

在点图上绘制置信度或预测区间ggplot2

有没有办法定制Plot(allEffects())面板标题?

如何创建一个由一个连续变量和一个因素变量组成的复杂方框图?

R中从因数到数字的转换

在具有条件的循环中添加行

如何使用ggsurvfit包更改风险表中的标签名称?

如何从矩阵绘制环弦图