首页 > 解决方案 > 在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 的初学者,所以这对我来说非常粗糙,我会对建议或提出的解决方案感到非常高兴。谢谢。

标签: rdataframerewriting

解决方案


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


推荐阅读