无法使用不同的数据类型从长到长进行更大范围的分布/透视 [英] Having trouble with spread/pivot wider from long with varying data types

查看:0
本文介绍了无法使用不同的数据类型从长到长进行更大范围的分布/透视的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

tst <- data.frame(ID = c(123, 123, 123, 124, 124, 124), 
              Identifier = c("S2", "S2", "S5", "S3", "S2", "S2"),
              Speed = c(15,24,11,34,13,15),
              Box_loc = c(801,802,803,801,802,803),
              Ord = c(86,87,90,81,82,84))

我一直试图将上述数据从长格式转换为宽格式,但每当我尝试自己研究它时,数据看起来不够相似,以至于我无法正确转换它。这看起来应该是一个简单的解决方案,但也许我遗漏了一些关键的细节。

ID 标识符(801) 速度(801) Ord(801) 标识符(802) 速度(802) Ord(802) 标识符(803) 速度(803) Ord(803)
123 s2 15 86 s2 24 87 s5 11 90
124 S3 34 81 s2 13 82 s2 15 84

我想让我的数据看起来像这个表。实际数据不止有2个ID(如果这很重要),并且头中的数字是Box_loc。换句话说,对于每个Box_loc,都有123-250之间的ID,每个ID都需要具有这些列的自己的行。我的实际文件大约有10列,但语法应该大致相同。

推荐答案

您可以使用以下解决方案:

library(tidyr)

tst %>%
  pivot_wider(names_from = Box_loc, 
              values_from = !c(ID, Box_loc), 
              names_glue = "{.value}({Box_loc})")

# A tibble: 2 x 10
     ID `Identifier(801)` `Identifier(802)` `Identifier(803)` `Speed(801)` `Speed(802)`
  <dbl> <chr>             <chr>             <chr>                    <dbl>        <dbl>
1   123 S2                S2                S5                          15           24
2   124 S3                S2                S2                          34           13
# ... with 4 more variables: Speed(803) <dbl>, Ord(801) <dbl>, Ord(802) <dbl>, Ord(803) <dbl>

这篇关于无法使用不同的数据类型从长到长进行更大范围的分布/透视的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆