R语言 矩阵的同时变换与求和

vfh0ocws  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(91)

所以我有一个包含以下数据的表
| | 纬度|经度| Latitude | Longitude |
| --|--|--|--| ------------ |
| X|二〇一六年|五万零七十九|十四点四二五| 14.425 |
| Y|二〇一七年|五万零七十九|十四点四二五| 14.425 |
| Y|二〇二二|五万零七十九|十四点四二五| 14.425 |
| Z轴|二〇一七年|五万零七十九|十四点四二五| 14.425 |
| Y|二〇一八年|五万零七十九|十四点四二五| 14.425 |
我想把它改造成这样
| 五万零七十九|50.080| 50.081| 50.082| 50.082 |
| --|--|--|--| ------------ |
| 1X2Y| Y1Z| 4X| 1X2Y| 1X2Y |
| 2年|1X2Y| Y1Z| Y| Y |
| Y1Z| Y1Z| 1X2Y| Z轴| Z |
| Z轴|2Z| 2年|2年| 2Y |
| X| Z轴|1X2Y| 2年| 2Y |
所以每年我都有一个单独的表,在这里我可以看到每种类型有多少个具有相同的坐标。
我已经设法为每年创建了单独的表,如下所示:
View(Matrices_by_year$ 2018年)
| | X| Y| Z轴| Y | Z |
| --|--|--|--|--| ------------ |
| 五万零七十九|十四点四二五|1| 0| 1| 1 |
| 五万零七十八|十四点四二五|二|三个|0| 0 |
| 50.077|十四点四二五|0| 1| 0| 0 |
| 五万零七十六|十四点四二五|1| 0|四| 4 |
它传达了同样的信息,但不是我想要的方式。我主要是在挣扎的部分,我需要把X/Y/Z中的数字加在一起在一个单元格中,而不会失去它们是什么类型的参考。

yeotifhr

yeotifhr1#

好吧,有点难完全理解你想要的,但我已经试过了。首先,最好使用dput(your_data)或dput(head(your_data))提供数据,因为其他人更容易将其读入R。 我假设你的数据是一个dataframe,即使你称之为矩阵。在它们之间转换应该不难。我也从你展示的最后一张table开始。基本上,我只是转向了更长的形式,这样列名(X,Y,Z)就很容易访问,然后你可以按位置将它们粘贴在一起。这确实在没有0的地方给予了你0。如果不希望这样,您可以在分组和汇总之前过滤掉具有0value`的行。

library(tidyr)
    library(dplyr)

test <- read.table(text = " Latitude    Longitude   X   Y   Z
1   50.079  14.425  1   0   1
2   50.078  14.425  2   3   0
3   50.077  14.425  0   1   0
4   50.076  14.425  1   0   4")

test %>% pivot_longer(c(X,Y,Z)) %>% 
  group_by(Latitude, Longitude) %>% 
  summarise(out = paste0(value, name, collapse = "")) %>% 
  pivot_wider(names_from = Latitude, values_from = out)
#> `summarise()` has grouped output by 'Latitude'. You can override using the `.groups` argument.
#> # A tibble: 1 x 5
#>   Longitude `50.076` `50.077` `50.078` `50.079`
#>       <dbl> <chr>    <chr>    <chr>    <chr>   
#> 1      14.4 1X0Y4Z   0X1Y0Z   2X3Y0Z   1X0Y1Z

字符串
reprex package(v2.0.1)于2023-07-31创建

相关问题