首页 > 解决方案 > 在r中将columm变成raw

问题描述

在此处输入图像描述

大家好,我有一个包含“Auto”、“ClasPri”和“Total”列的数据框。对于每个“Auto”,我可以有 4 个不同的“ClasPri”和每个“ClasPri”的“Total”。我想让每个“自动”只出现一次,而其他列是“0、1、2、3”以及它们各自的“总计”。有人能帮我吗?第一个图像是它的样子,第二个图像应该是它​​的样子。

第一张是它的样子,第二张是我想要的样子

标签: rrows

解决方案


我认为您只是想将您的数据转移到ClasPri. 这是一种 dplyr / tidyr 方法:

library(tidyr)
library(dplyr)

arrange(df, ClasPri) %>%
  pivot_wider(names_from = ClasPri, values_from = Total, values_fill = 0) %>%
  arrange(Auto)
#> # A tibble: 4 x 5
#>    Auto   `0`      `1`     `2`     `3`
#>   <int> <int>    <int>   <int>   <int>
#> 1   343     0   688160 8260000       0
#> 2   453  6000 29168829 7663334 2275200
#> 3   469     0  7888857       0  540000
#> 4   609     0        0       0       0

使用的数据

df <- data.frame(Auto    = c(343L, 343L, 453L, 453L, 453L, 453L, 469L, 469L, 609L), 
                 ClasPri = c(1L, 2L, 0L, 1L, 2L, 3L, 1L, 3L, 1L), 
                 Total   = c(688160L, 8260000L, 6000L, 29168829L, 
                             7663334L, 2275200L, 7888857L, 540000L, 0L))

df
#>   Auto ClasPri    Total
#> 1  343       1   688160
#> 2  343       2  8260000
#> 3  453       0     6000
#> 4  453       1 29168829
#> 5  453       2  7663334
#> 6  453       3  2275200
#> 7  469       1  7888857
#> 8  469       3   540000
#> 9  609       1        0

reprex 包(v0.3.0)于 2020-07-19 创建


推荐阅读