r - 在r中重写表/数据框
问题描述
这是我的数据集的示例:
传感器----时间(GMT)-----温度(°C)
1 ------- 24/06/2002 05:02:01 --- 33.855
2 ------- 24/06/2002 05:02:01 --- 33.827
3 ------- 24/06/2002 05:02:01 --- 33.104
4 ------- 24/06/2002 05:02:01 --- 33.787
1 ------- 24/06/2002 05:02:02 --- 33.609
2 ------- 24/06/2002 05:02:02 --- 33.609
3 ------- 24/06/2002 05:02:02 --- 33.610
4 ------- 24/06/2002 05:02:02 --- 33.608
为了能够使用它,我必须重写这个数据集,使它看起来像这样:
时间 ---------------------- Sensor1 - Sensor2 - Sensor3 -Sensor4
2002 年 6 月 24 日 05:02:01 -- 33.855 -- 33.827 -- 33.104 -- 33.787
2002 年 6 月 24 日 05:02:02 --33.609 -- 33.609 -- 33.610 -- 33.608
我是 R 的初学者,所以这对我来说非常粗糙,我会对建议或提出的解决方案感到非常高兴。谢谢。
解决方案
1.创建示例数据集:
df <- structure(list(Sensor = c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L),
Time = c("24/06/2002 05:02:01", "24/06/2002 05:02:01", "24/06/2002 05:02:01", "24/06/2002 05:02:01",
"24/06/2002 05:02:02", "24/06/2002 05:02:02", "24/06/2002 05:02:02","24/06/2002 05:02:02"),
Temp = c(33.855, 33.827, 33.104, 33.787, 33.609, 33.609, 33.61, 33.608)),
row.names = c(NA, -8L),
class = c("data.table", "data.frame"))
2.建议的解决方案使用tidyr
pivot_wider
,一个完全符合你想要的功能;)
library(dplyr)
library(tidyr)
df %>%
pivot_wider(names_from = Sensor, values_from = Temp, names_prefix="Sensor")
这返回:
# A tibble: 2 x 5 Time Sensor1 Sensor2 Sensor3 Sensor4 <chr> <dbl> <dbl> <dbl> <dbl> 1 24/06/2002 05:02:01 33.9 33.8 33.1 33.8 2 24/06/2002 05:02:02 33.6 33.6 33.6 33.6
PS实际上没有理由使用dplyr
语法,所以这里是只使用的解决方案tidyr::pivot_wider
:
pivot_wider(df, names_from = Sensor, values_from = Temp, names_prefix="Sensor")
编辑
删除了意外依赖data.table
推荐阅读
- excel - VBA Visual Basic,数组在 32,768 行后停止给出结果,带递归的组合代码
- c - 同时运行n个进程
- javascript - Angular Material工具栏单击事件未记录?
- hadoop - 迁移到 Ranger 授权后无法启动 HBase master
- laravel - 定义关系后,此集合实例上不存在属性 [roles]
- node.js - 尝试使用节点中的 API 写入文件时出现 UnhandledPromiseRejection
- r - 将文件名与 r 中的动态变量匹配
- html - 使用css将元素移出div
- c++ - 匿名对象的属性
- python - python程序中找到2位数快乐数字的问题(卡在循环中)