R 中的数据整理与 DateTime 列和多个观察
Data Wrangling in R with DateTime column and Multiple observations
我在 CSV 文件中有一个通用格式的数据集,我将其作为 tibble 或 data.frame 读入 R。由于这来自其他地方,所以它采用像这样的宽格式,第一行是数据框的 header:
datetime City1 City2 City3 City4
2020-01-01 00:15 2.3 2.6 2.1 2.2
2020-01-01 00:30 1.1 1.8 1.6 1.2
...
为了在 R 中使用数据进行进一步分析,它需要采用重复日期时间的长格式,因此应该将其转换为类似这样的格式(使用新的 header) :
datetime Location Value
2020-01-01 00:15 City1 2.3
2020-01-01 00:15 City2 2.6
2020-01-01 00:15 City3 2.1
2020-01-01 00:15 City4 2.2
2020-01-01 00:30 City1 1.1
2020-01-01 00:30 City2 1.8
2020-01-01 00:30 City3 1.6
2020-01-01 00:30 City4 1.2
...
这似乎是一项常见的数据整理任务,但在准备好 pivot_longer 文档后我未能找到一个好的示例(也有可能我不完全理解所提供的示例)。
希望对您有所帮助:
library(data.table)
df <- setDT(your_df)
melt(df,
id.vars='datetime',
variable.name = 'Location',
value.name = 'Value')
是否回答:
> df
# A tibble: 2 x 5
datetime City1 City2 City3 City4
<dttm> <dbl> <dbl> <dbl> <dbl>
1 2020-01-01 00:15:00 2.3 2.6 2.1 2.2
2 2020-01-01 00:30:00 1.1 1.8 1.6 1.2
> df %>% pivot_longer(cols = starts_with('City'), names_to = 'Location')
# A tibble: 8 x 3
datetime Location value
<dttm> <chr> <dbl>
1 2020-01-01 00:15:00 City1 2.3
2 2020-01-01 00:15:00 City2 2.6
3 2020-01-01 00:15:00 City3 2.1
4 2020-01-01 00:15:00 City4 2.2
5 2020-01-01 00:30:00 City1 1.1
6 2020-01-01 00:30:00 City2 1.8
7 2020-01-01 00:30:00 City3 1.6
8 2020-01-01 00:30:00 City4 1.2
>
我在 CSV 文件中有一个通用格式的数据集,我将其作为 tibble 或 data.frame 读入 R。由于这来自其他地方,所以它采用像这样的宽格式,第一行是数据框的 header:
datetime City1 City2 City3 City4
2020-01-01 00:15 2.3 2.6 2.1 2.2
2020-01-01 00:30 1.1 1.8 1.6 1.2
...
为了在 R 中使用数据进行进一步分析,它需要采用重复日期时间的长格式,因此应该将其转换为类似这样的格式(使用新的 header) :
datetime Location Value
2020-01-01 00:15 City1 2.3
2020-01-01 00:15 City2 2.6
2020-01-01 00:15 City3 2.1
2020-01-01 00:15 City4 2.2
2020-01-01 00:30 City1 1.1
2020-01-01 00:30 City2 1.8
2020-01-01 00:30 City3 1.6
2020-01-01 00:30 City4 1.2
...
这似乎是一项常见的数据整理任务,但在准备好 pivot_longer 文档后我未能找到一个好的示例(也有可能我不完全理解所提供的示例)。
希望对您有所帮助:
library(data.table)
df <- setDT(your_df)
melt(df,
id.vars='datetime',
variable.name = 'Location',
value.name = 'Value')
是否回答:
> df
# A tibble: 2 x 5
datetime City1 City2 City3 City4
<dttm> <dbl> <dbl> <dbl> <dbl>
1 2020-01-01 00:15:00 2.3 2.6 2.1 2.2
2 2020-01-01 00:30:00 1.1 1.8 1.6 1.2
> df %>% pivot_longer(cols = starts_with('City'), names_to = 'Location')
# A tibble: 8 x 3
datetime Location value
<dttm> <chr> <dbl>
1 2020-01-01 00:15:00 City1 2.3
2 2020-01-01 00:15:00 City2 2.6
3 2020-01-01 00:15:00 City3 2.1
4 2020-01-01 00:15:00 City4 2.2
5 2020-01-01 00:30:00 City1 1.1
6 2020-01-01 00:30:00 City2 1.8
7 2020-01-01 00:30:00 City3 1.6
8 2020-01-01 00:30:00 City4 1.2
>