Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用R中的多个标题行重塑数据_R_Excel_Tidyr_Readr_Readxl - Fatal编程技术网

用R中的多个标题行重塑数据

用R中的多个标题行重塑数据,r,excel,tidyr,readr,readxl,R,Excel,Tidyr,Readr,Readxl,如何将这个凌乱的Excel表格整理成整齐的格式,以便在R中使用?我可以使用readr函数,比如spread()和gather(),但这似乎需要更高的复杂度。下面是我对Excel数据框架的最佳重构,供您处理。请随意修改,以便更好地说明问题 Julie Joe Measurement 1 Measurement 2 Measurement 1

如何将这个凌乱的Excel表格整理成整齐的格式,以便在R中使用?我可以使用readr函数,比如
spread()
gather()
,但这似乎需要更高的复杂度。下面是我对Excel数据框架的最佳重构,供您处理。请随意修改,以便更好地说明问题

                Julie                           Joe                
                Measurement 1   Measurement 2   Measurement 1   Measurement 2
Part Number 1   33              32              33              31
Part Number 2   34              31              33              32
Part Number 3   33              31              30              31
库(tidyverse)

凌乱棘手的部分是获取正确的列名,然后执行
聚集
分离
,听起来您已经很熟悉了。通常我不喜欢按数字选择行,但在这种情况下,如果您以这种方式从Excel可靠地读取数据,我认为这是有意义的

注意:如果一个人的名字中有一个
,最后一步将失败

库(tidyverse)
更少的混乱%
全部变异(如字符)%>%
设置名称(c(“零件”),
粘贴(名称(.)[2:ncol(.)],
[1,2:ncol(.)],
sep=“-”))%%>%
`[`(2:nrow(.),)%>%
聚集(“键”、“值”,包含(“度量”))%>%
单独(“键”,c(“人”,“测量”),sep=“-”%>%
在(“person”、~stringr::str\u replace(.x、\\\..*,”)处进行变异
不那么凌乱
#>零件人测量值
#>1零件号1 Julie测量1 33
#>2零件号2 Julie测量1 34
#>3零件号3 Julie测量1 33
#>4零件号1 Julie测量2 32
#>5零件号2 Julie测量2 31
#>6零件号3 Julie测量2 31
#>7零件号1测量1 33
#>8零件号2乔测量1 33
#>9零件号3乔测量1 30
#>10零件号1乔测量2 31
#>11零件号2测量值2 32
#>12零件号3乔测量2 31
数据 略微改变,因为我注意到您显示的内容与测量数字代码之间存在差异:


凌乱这句台词在做什么?我在tidyverse的几年里从来没有见过这样的事。我可能需要在某个时候读一本关于R垒的书。我能猜到的最好的是
`[`
[]的缩写
?这只是正常的子集设置。它看起来很有趣,因为我需要用反勾号引用它以将其包含在管道步骤中。例如,
mtcars[1:5,]
`[`(mtcars,1:5,)
是相同的。所以
`[`(2:nrow(.),)
在功能上等同于
[2:nrow(.),]
在您的示例中?我只是以前从未见过这种符号`[`
也没有什么收获。ThanksI最近问了一个类似的问题。这是我得到的回答,它对我的数据非常有效。我不得不做一些修改,因为我的顶部有10个不同的类别,每个类别分布了4年。
library(tidyverse)
messy <- data.frame(
  " " = c(" ", "Part Number 1", "Part Number 2", "Part Number 3"), 
  Julie = c("Measurement 1", 33, 34, 33),
  Julie = c("Measurement 2", 32, 31, 31),
  Joe = c("Measurement 1", 33, 33, 30),
  Joe = c("Measurement 2", 31, 32, 31))