r - R:根据单列的因子将每2行数据重新整形为1行
问题描述
我有以下数据:
TimeStamp Fab23.A start.end
1 2020-03-02 20:44:00 27.54236 start
2 2020-03-02 20:50:00 186.08670 end
3 2020-03-03 18:12:00 37.33132 start
4 2020-03-03 18:16:00 189.78060 end
5 2020-03-04 17:48:00 33.78360 start
6 2020-03-04 17:52:00 190.08100 end
.
.
.
我正在尝试根据最后一列的最后一个分类值将它们重塑为以下格式:
start.TimeStamp end.TimeStamp start.Fab23.A start.Fab23.A
1 2020-03-02 20:44:00 2020-03-02 20:50:00 27.54236 186.08670
2 2020-03-03 18:12:00 2020-03-03 18:16:00 37.33132 189.78060
3 2020-03-04 17:48:00 2020-03-04 17:52:00 33.78360 190.08100
.
.
.
我尝试过重塑和融化功能,但无济于事。将不胜感激任何建议。
解决方案
您可以使用 :
library(dplyr)
df %>%
group_by(start.end) %>%
mutate(row = row_number()) %>%
tidyr::pivot_wider(names_from = start.end,
values_from = c(TimeStamp, Fab23.A)) %>%
select(-row)
# A tibble: 3 x 4
# TimeStamp_start TimeStamp_end Fab23.A_start Fab23.A_end
# <chr> <chr> <dbl> <dbl>
#1 2020-03-0220:44:00 2020-03-0220:50:00 27.5 186.
#2 2020-03-0318:12:00 2020-03-0318:16:00 37.3 190.
#3 2020-03-0417:48:00 2020-03-0417:52:00 33.8 190.
或使用data.table
:
library(data.table)
dcast(setDT(df), rowid(start.end)~start.end,value.var = c("TimeStamp", "Fab23.A"))
数据
df <- structure(list(TimeStamp = c("2020-03-0220:44:00", "2020-03-0220:50:00",
"2020-03-0318:12:00", "2020-03-0318:16:00", "2020-03-0417:48:00",
"2020-03-0417:52:00"), Fab23.A = c(27.54236, 186.0867, 37.33132,
189.7806, 33.7836, 190.081), start.end = c("start", "end", "start",
"end", "start", "end")), class = "data.frame", row.names = c(NA, -6L))
推荐阅读
- c# - Updates a single work item Azure Devops using Asp.net
- r - How can I merge two dataframes equivalently to VLookup criteria?
- node.js - 使用 Jest 中的类搜索实体时出现 TypeORM RepositoryNotFoundError
- postgresql - 在 eloquent / Laravel 更新期间发现意外数据
- wordpress - 没有定义模板 wordpress masterstudy
- javascript - react js匹配具有相似数据的行
- c# - 如何发送“安全电子邮件”?
- python - 如何在 Python 中创建数据集?
- powershell - 我无法使用 powershell 更改多个文件的扩展名
- c++ - CUDA 和 C++ 项目上的 CMake