如何将纬度(行)x 经度(列)数据框更改为 R 中的纬度(第 1 列)、经度(第 2 列)、值(第 3 列)数据框?
How to change a latitude (rows) x longitude (columns) data frame into a latitude (column 1), longitude (column 2), value (column 3) data frame in R?
我有一个数据框,其中纬度 (lat) 值是行的名称,经度 (lon) 值是列的名称,数据框的每个单元格是一个温度 (temp)我感兴趣的值(或 NA 值)例如:
lon lon lon lon lon lon
lat temp temp temp temp temp temp
lat temp temp temp temp temp temp
lat temp temp temp temp temp temp
lat temp temp temp temp temp temp
我的问题是,如何重新格式化此数据框,使其格式如下:
C1 C2 C3
R1 lat lon temp
R2 lat lon temp
R3 lat lon temp
R4 lat lon temp
任何帮助、函数或示例代码将不胜感激!
我们可以使用
as.data.frame(as.table(m1))
或使用 reshape2
中的 melt
library(reshape2)
melt(m1)
我们可以使用 tidyr
中的 pivot_longer
。这是一个模拟数据的例子:
df <- structure(list(lon1 = c(1L, 1L, 1L, 1L), lon2 = c(2L, 2L, 2L,
2L), lon3 = c(3L, 3L, 3L, 3L), lon4 = c(3L, 3L, 3L, 3L), lon5 = c(4L,
4L, 4L, 4L), lon6 = c(5L, 5L, 5L, 5L)), row.names = c("lat1",
"lat2", "lat3", "lat4"), class = "data.frame")
library(dplyr)
library(tidyr)
df %>%
rownames_to_column("latitude") %>%
pivot_longer(
cols = -latitude,
names_to="longitude",
values_to= "temperature"
)
输出:
latitude longitude temperature
<chr> <chr> <int>
1 lat1 lon1 1
2 lat1 lon2 2
3 lat1 lon3 3
4 lat1 lon4 3
5 lat1 lon5 4
6 lat1 lon6 5
7 lat2 lon1 1
8 lat2 lon2 2
9 lat2 lon3 3
10 lat2 lon4 3
# ... with 14 more rows
我有一个数据框,其中纬度 (lat) 值是行的名称,经度 (lon) 值是列的名称,数据框的每个单元格是一个温度 (temp)我感兴趣的值(或 NA 值)例如:
lon lon lon lon lon lon
lat temp temp temp temp temp temp
lat temp temp temp temp temp temp
lat temp temp temp temp temp temp
lat temp temp temp temp temp temp
我的问题是,如何重新格式化此数据框,使其格式如下:
C1 C2 C3
R1 lat lon temp
R2 lat lon temp
R3 lat lon temp
R4 lat lon temp
任何帮助、函数或示例代码将不胜感激!
我们可以使用
as.data.frame(as.table(m1))
或使用 reshape2
melt
library(reshape2)
melt(m1)
我们可以使用 tidyr
中的 pivot_longer
。这是一个模拟数据的例子:
df <- structure(list(lon1 = c(1L, 1L, 1L, 1L), lon2 = c(2L, 2L, 2L,
2L), lon3 = c(3L, 3L, 3L, 3L), lon4 = c(3L, 3L, 3L, 3L), lon5 = c(4L,
4L, 4L, 4L), lon6 = c(5L, 5L, 5L, 5L)), row.names = c("lat1",
"lat2", "lat3", "lat4"), class = "data.frame")
library(dplyr)
library(tidyr)
df %>%
rownames_to_column("latitude") %>%
pivot_longer(
cols = -latitude,
names_to="longitude",
values_to= "temperature"
)
输出:
latitude longitude temperature
<chr> <chr> <int>
1 lat1 lon1 1
2 lat1 lon2 2
3 lat1 lon3 3
4 lat1 lon4 3
5 lat1 lon5 4
6 lat1 lon6 5
7 lat2 lon1 1
8 lat2 lon2 2
9 lat2 lon3 3
10 lat2 lon4 3
# ... with 14 more rows