如何在 R 中转换这些数据?
How can I transform this data in R?
我尝试过转换这些数据,但我对 R 还很陌生,希望在下面得到一些帮助。
我使用了这段代码,它转换了整个数据。
attach(merged_file)
final_df <- as.data.frame(t(merged_file))
任何帮助将不胜感激。
我有这个要转换的原始数据集:
Year AEZ 01-Jan 02-Jan 03-Jan 04-Jan 05-Jan
1981 1 0.025 0.025 0.025 0.025 0.025
1981 2 0.0049 0.0049 0.0049 0.0049 0.0049
1982 1 0.0251 0.0251 0.0251 0.0251 0.0251
1982 2 0.0049 0.0049 0.0049 0.0049 0.0049
转换后的数据应如下所示:
aez year day rainfall
1 1981 01-Jan 0.025
1 1981 02-Jan 0.025
1 1981 03-Jan 0.025
1 1981 04-Jan 0.025
1 1981 05-Jan 0.025
2 1981 01-Jan 0.0049
2 1981 02-Jan 0.0049
2 1981 03-Jan 0.0049
2 1981 04-Jan 0.0049
2 1982 05-Jan 0.0049
1 1982 01-Jan 0.0251
1 1982 02-Jan 0.0251
1 1982 03-Jan 0.0251
1 1982 04-Jan 0.0251
1 1982 05-Jan 0.0251
2 1982 01-Jan 0.0049
2 1982 02-Jan 0.0049
2 1982 03-Jan 0.0049
2 1982 04-Jan 0.0049
2 1982 05-Jan 0.0049
你可以试试这个:
library(dplyr)
df <- tribble(
~Year, ~AEZ, ~`01-Jan`, ~`02-Jan`, ~`03-Jan`, ~`04-Jan`, ~`05-Jan`,
1981, 1, 0.025, 0.025, 0.025, 0.025, 0.025,
1981, 2, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049,
1982, 1, 0.0251, 0.0251, 0.0251, 0.0251, 0.0251,
1982, 2, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049
)
df %>%
pivot_longer(cols=`01-Jan`:`05-Jan`, names_to = "day", values_to = "rainfall")
结果:
A tibble: 20 × 4
Year AEZ day rainfall
<dbl> <dbl> <chr> <dbl>
1 1981 1 01-Jan 0.025
2 1981 1 02-Jan 0.025
3 1981 1 03-Jan 0.025
4 1981 1 04-Jan 0.025
5 1981 1 05-Jan 0.025
6 1981 2 01-Jan 0.0049
7 1981 2 02-Jan 0.0049
8 1981 2 03-Jan 0.0049
9 1981 2 04-Jan 0.0049
10 1981 2 05-Jan 0.0049
11 1982 1 01-Jan 0.0251
12 1982 1 02-Jan 0.0251
13 1982 1 03-Jan 0.0251
14 1982 1 04-Jan 0.0251
15 1982 1 05-Jan 0.0251
16 1982 2 01-Jan 0.0049
17 1982 2 02-Jan 0.0049
18 1982 2 03-Jan 0.0049
19 1982 2 04-Jan 0.0049
20 1982 2 05-Jan 0.0049
我尝试过转换这些数据,但我对 R 还很陌生,希望在下面得到一些帮助。
我使用了这段代码,它转换了整个数据。
attach(merged_file)
final_df <- as.data.frame(t(merged_file))
任何帮助将不胜感激。
我有这个要转换的原始数据集:
Year AEZ 01-Jan 02-Jan 03-Jan 04-Jan 05-Jan
1981 1 0.025 0.025 0.025 0.025 0.025
1981 2 0.0049 0.0049 0.0049 0.0049 0.0049
1982 1 0.0251 0.0251 0.0251 0.0251 0.0251
1982 2 0.0049 0.0049 0.0049 0.0049 0.0049
转换后的数据应如下所示:
aez year day rainfall
1 1981 01-Jan 0.025
1 1981 02-Jan 0.025
1 1981 03-Jan 0.025
1 1981 04-Jan 0.025
1 1981 05-Jan 0.025
2 1981 01-Jan 0.0049
2 1981 02-Jan 0.0049
2 1981 03-Jan 0.0049
2 1981 04-Jan 0.0049
2 1982 05-Jan 0.0049
1 1982 01-Jan 0.0251
1 1982 02-Jan 0.0251
1 1982 03-Jan 0.0251
1 1982 04-Jan 0.0251
1 1982 05-Jan 0.0251
2 1982 01-Jan 0.0049
2 1982 02-Jan 0.0049
2 1982 03-Jan 0.0049
2 1982 04-Jan 0.0049
2 1982 05-Jan 0.0049
你可以试试这个:
library(dplyr)
df <- tribble(
~Year, ~AEZ, ~`01-Jan`, ~`02-Jan`, ~`03-Jan`, ~`04-Jan`, ~`05-Jan`,
1981, 1, 0.025, 0.025, 0.025, 0.025, 0.025,
1981, 2, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049,
1982, 1, 0.0251, 0.0251, 0.0251, 0.0251, 0.0251,
1982, 2, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049
)
df %>%
pivot_longer(cols=`01-Jan`:`05-Jan`, names_to = "day", values_to = "rainfall")
结果:
A tibble: 20 × 4
Year AEZ day rainfall
<dbl> <dbl> <chr> <dbl>
1 1981 1 01-Jan 0.025
2 1981 1 02-Jan 0.025
3 1981 1 03-Jan 0.025
4 1981 1 04-Jan 0.025
5 1981 1 05-Jan 0.025
6 1981 2 01-Jan 0.0049
7 1981 2 02-Jan 0.0049
8 1981 2 03-Jan 0.0049
9 1981 2 04-Jan 0.0049
10 1981 2 05-Jan 0.0049
11 1982 1 01-Jan 0.0251
12 1982 1 02-Jan 0.0251
13 1982 1 03-Jan 0.0251
14 1982 1 04-Jan 0.0251
15 1982 1 05-Jan 0.0251
16 1982 2 01-Jan 0.0049
17 1982 2 02-Jan 0.0049
18 1982 2 03-Jan 0.0049
19 1982 2 04-Jan 0.0049
20 1982 2 05-Jan 0.0049