R:Pivot_Wide()以扩展数据帧 [英] R: pivot_wider() to extend a dataframe

查看:21
本文介绍了R:Pivot_Wide()以扩展数据帧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使用PIVOT_WIDER将数据帧转换为宽格式时遇到一些问题。我的数据帧如下所示:

Data <- read.table(header = T, text = "
        ID  A         B           C           D
         1  6.01764 0.00409222  0.000500143 101.816
         1  6.01769 0.00431931  0.000565946 101.334
         1  6.01774 0.00454617  0.00063163  101.923
         2  6.01779 0.00477308  0.000697374 101.914
         2  6.01784 0.00500005  0.000763118 101.905
         2  6.0179  0.00522703  0.000828803 101.926
         3  6.01795 0.005454    0.000894606 101.889
         3  6.018   0.00568086  0.000960231 101.895
         3  6.01805 0.00590783  0.00102603  101.87
")

我想通过将ID和列名组合在一起来创建唯一的列名,使其如下所示:

Datalong <- read.table(header = T, text = "
1A  1B  1C  1D  2A  2B  2C  2D  3A  3B  3C  3D
6.01764 0.00409222  0.000500143 101.816 6.01779 0.00477308  0.000697374 101.914 6.01795 0.005454    0.000894606 101.889
6.01769 0.00431931  0.000565946 101.334 6.01784 0.00500005  0.000763118 101.905 6.018   0.00568086  0.000960231 101.895
6.01774 0.00454617  0.00063163  101.923 6.0179  0.00522703  0.000828803 101.926 6.01805 0.00590783  0.00102603  101.87
")

我想我可能需要添加一个新列来计算ID列的每个实例(因为它是时间序列数据)

我已尝试:

DataNew <- Data %>% pivot_wider(names_from = ID, values_from = c(ID, colnames(Data)))

Data %>% group_by(ID) %>% mutate(time = row_number()) %>% pivot_wider(names_from = time, values_from = c(ID, colnames(Data)))

但无济于事。任何支持我们都将不胜感激!

推荐答案

这样如何:

DataNew <- Data %>% 
  pivot_longer(-ID, names_to="var", values_to="vals") %>% 
  group_by(ID, var) %>% 
  mutate(obs =1:n(), 
         vnames = paste0(ID, var)) %>% 
  ungroup %>% 
  select(-c(ID, var)) %>%
  pivot_wider(names_from = vnames, values_from = vals) %>% 
  select(-obs)

DataNew
# # A tibble: 3 x 12
#   `1A`    `1B`    `1C`  `1D`  `2A`    `2B`    `2C`  `2D`  `3A`    `3B`
#   <dbl>   <dbl>   <dbl> <dbl> <dbl>   <dbl>   <dbl> <dbl> <dbl>   <dbl>
# 1  6.02 0.00409 5.00e-4  102.  6.02 0.00477 6.97e-4  102.  6.02 0.00545
# 2  6.02 0.00432 5.66e-4  101.  6.02 0.00500 7.63e-4  102.  6.02 0.00568
# 3  6.02 0.00455 6.32e-4  102.  6.02 0.00523 8.29e-4  102.  6.02 0.00591
# # … with 2 more variables: `3C` <dbl>, `3D` <dbl>

这篇关于R:Pivot_Wide()以扩展数据帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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