我有两个条件的实验数据,每个参与者在两个条件下都接受了不同属性的测试.数据集是宽格式的,变量名称模式如下:条件A的变量以MM7M开头,条件B的变量以MMsf7M开头,然后附加属性的缩写,例如MM7Mabc和MMsf7Mabc. 我想将数据集reshape 为Long格式,这样每个参与者都有两行,一行用于条件A,一行用于条件B;条件应该只有一列,具有值A和B,并且每个属性都有一列,以属性命名,例如ABC. 因为有数百个属性,所以我想自动为所有遵循模式条件+某个属性的变量对进行透视.如有任何帮助,不胜感激.

编辑以澄清:我的意思是 for each 属性创建一个新变量,即abc、abcde、xyz、Total_c,因此每个参与者只有2行.

library(tidyverse)

data <- tibble(
  id = c(1, 2, 3, 4),
  MM7Mabcde = c(2, 4, 2, 2),
  MMsf7Mabcde = c(4, 6, 3, 4),
  MM7Mxyz = c(2, 4, 4, 2),
  MMsf7Mxyz = c(6, 8, 9, 9),
  MM7Mtotal_c = c(6, 5, 4, 1),
  MMsf7Mtotal_c = c(12, 18, 22, 32),
  someVar = c(5, 6, 9, 9)
)

推荐答案

只要您的条件名称有一些共同的正则表达式,您就可以使用names_pattern,在names_to中使用特殊名称.value

pivot_longer(data, contains("7M"), 
             names_pattern = "^(.*7M)(.*)$",
             names_to = c("Condition", ".value"))
#> # A tibble: 8 x 6
#>      id someVar Condition abcde   xyz total_c
#>   <dbl>   <dbl> <chr>     <dbl> <dbl>   <dbl>
#> 1     1       5 MM7M          2     2       6
#> 2     1       5 MMsf7M        4     6      12
#> 3     1       6 MM7M          4     4       5
#> 4     1       6 MMsf7M        6     8      18
#> 5     2       9 MM7M          2     4       4
#> 6     2       9 MMsf7M        3     9      22
#> 7     3       9 MM7M          2     2       1
#> 8     3       9 MMsf7M        4     9      32

R相关问答推荐

多个ggpredicate对象的平均值

混淆矩阵,其中每列和等于1

无法运行通过R中的Auto.arima获得的ARIMA模型

如何使用stat_extract_all正确提取我的目标值?

工作流程_set带有Dplyrr风格的 Select 器,用于 Select 结果和预测因子R

单击 map 后,将坐标复制到剪贴板

在R中使用download. file().奇怪的URL?

如何在ggplot图中找到第二轴的比例

如何在观测缺失的地方添加零

当我们有多个反斜杠和/特殊字符时使用Gsubing

将工作目录子文件夹中的文件批量重命名为顺序

使用列中的值来调用函数调用中应使用的其他列

计算使一组输入值最小化的a、b和c的值

如何预测原始数据集并将值添加到原始数据集中

R基于变量组合创建新的指标列

R try Catch in the loop-跳过缺少的值并创建一个DF,显示跳过的内容

如何在刻面和翻转堆叠条形图中对齐geom_text()

网络抓取NBA.com

reshape 数据帧-基于组将行转换为列

列间序列生成器的功能