r - R:pivot_wider() 扩展数据框
问题描述
我在使用 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>
推荐阅读
- sqlite - 在 Doxygen SQLite3 输出中区分外部函数
- wordpress - 每当我点击我网站的主菜单选项时,就会出现不需要的形状。请建议我如何删除它?
- java - 如何使用 Intent.ACTION_VIEW 和 Uri 打开确切的应用程序
- python-3.x - 无法在熊猫中应用 unicode-escape
- selenium-webdriver - 配置 devcontainer 以运行电子应用程序?
- vscode-extensions - 如何更改特定行的高度?
- python - 如何编辑文件中的一行,替换该行并向下连接(下移)其他变量
- filesystems - 如何在 ubuntu 中增加文件系统根目录的大小
- python - 根据其他列的条件创建新列
- django - 如何将网站中创建的数据动态存储到数据库中?