如何创建一个列来重组 R 中的数据框?
How to create a column to reorganize data frame in R?
我有一个如下所示的数据框:
Date ACO AJM ATI
1/1/2019 0.59 0.28 0.39
1/2/2019 0.35 0.36 0.45
1/3/2019 0.46 0.37 0.63
如何重组数据框使其看起来像这样:
Date id_station Value
1/1/2019 ACO 0.59
1/1/2019 AJM 0.28
1/1/2019 ATI 0.39
1/2/2019 ACO 0.35
1/2/2019 AJM 0.36
1/2/2019 ATI 0.45
1/3/2019 ACO 0.46
1/3/2019 AJM 0.37
1/3/2019 ATI 0.63
基本上,我想创建 2 个名称为 id_station 和值的列来重组我的数据框。
这里可能有选项,使用data.table
library(data.table)
> melt(setDT(df), id.var = "Date")
Date variable value
1: 1/1/2019 ACO 0.59
2: 1/2/2019 ACO 0.35
3: 1/3/2019 ACO 0.46
4: 1/1/2019 AJM 0.28
5: 1/2/2019 AJM 0.36
6: 1/3/2019 AJM 0.37
7: 1/1/2019 ATI 0.39
8: 1/2/2019 ATI 0.45
9: 1/3/2019 ATI 0.63
或
> setDT(df)[, rev(stack(.SD)), Date]
Date ind values
1: 1/1/2019 ACO 0.59
2: 1/1/2019 AJM 0.28
3: 1/1/2019 ATI 0.39
4: 1/2/2019 ACO 0.35
5: 1/2/2019 AJM 0.36
6: 1/2/2019 ATI 0.45
7: 1/3/2019 ACO 0.46
8: 1/3/2019 AJM 0.37
9: 1/3/2019 ATI 0.63
我有一个如下所示的数据框:
Date ACO AJM ATI
1/1/2019 0.59 0.28 0.39
1/2/2019 0.35 0.36 0.45
1/3/2019 0.46 0.37 0.63
如何重组数据框使其看起来像这样:
Date id_station Value
1/1/2019 ACO 0.59
1/1/2019 AJM 0.28
1/1/2019 ATI 0.39
1/2/2019 ACO 0.35
1/2/2019 AJM 0.36
1/2/2019 ATI 0.45
1/3/2019 ACO 0.46
1/3/2019 AJM 0.37
1/3/2019 ATI 0.63
基本上,我想创建 2 个名称为 id_station 和值的列来重组我的数据框。
这里可能有选项,使用data.table
library(data.table)
> melt(setDT(df), id.var = "Date")
Date variable value
1: 1/1/2019 ACO 0.59
2: 1/2/2019 ACO 0.35
3: 1/3/2019 ACO 0.46
4: 1/1/2019 AJM 0.28
5: 1/2/2019 AJM 0.36
6: 1/3/2019 AJM 0.37
7: 1/1/2019 ATI 0.39
8: 1/2/2019 ATI 0.45
9: 1/3/2019 ATI 0.63
或
> setDT(df)[, rev(stack(.SD)), Date]
Date ind values
1: 1/1/2019 ACO 0.59
2: 1/1/2019 AJM 0.28
3: 1/1/2019 ATI 0.39
4: 1/2/2019 ACO 0.35
5: 1/2/2019 AJM 0.36
6: 1/2/2019 ATI 0.45
7: 1/3/2019 ACO 0.46
8: 1/3/2019 AJM 0.37
9: 1/3/2019 ATI 0.63