Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 变异列以获得唯一值,转置另一列并添加这些唯一值的百分比_R_Dplyr_Tidyr_Plyr_Mutate - Fatal编程技术网

R 变异列以获得唯一值,转置另一列并添加这些唯一值的百分比

R 变异列以获得唯一值,转置另一列并添加这些唯一值的百分比,r,dplyr,tidyr,plyr,mutate,R,Dplyr,Tidyr,Plyr,Mutate,我有一个数据集,我有一个子集,如下所示: 项目 代码 百分比 10000 123 0.2 10001 134 0.98 10001 152 0.02 10002 123 0.68 10003 123 1. 10002 178 0.32 10004 189 1. 使用tidyverse 库(tidyverse) df#A tible:5 x 6 #>项目'123``134``152``178``189` #> #> 1 10000 0.2 0 0 0

我有一个数据集,我有一个子集,如下所示:

项目 代码 百分比 10000 123 0.2 10001 134 0.98 10001 152 0.02 10002 123 0.68 10003 123 1. 10002 178 0.32 10004 189 1.
使用tidyverse

库(tidyverse)
df#A tible:5 x 6
#>项目'123``134``152``178``189`
#>        
#> 1 10000  0.2   0     0     0        0
#> 2 10001  0     0.98  0.02  0        0
#> 3 10002  0.68  0     0     0.32     0
#> 4 10003  1     0     0     0        0
#> 5 10004  0     0     0     0        1
由(v1.0.0)于2021年2月25日创建

使用数据表

库(data.table)
setDT(df)
dcast(数据=df,公式=Item~Code,value.var=“百分比”,填充=0)
#>项目123 134 152 178 189
#> 1: 10000 0.20 0.00 0.00 0.00   0
#> 2: 10001 0.00 0.98 0.02 0.00   0
#> 3: 10002 0.68 0.00 0.00 0.32   0
#> 4: 10003 1.00 0.00 0.00 0.00   0
#> 5: 10004 0.00 0.00 0.00 0.00   1

由(v1.0.0)于2021年2月25日使用tidyverse创建

库(tidyverse)
df#A tible:5 x 6
#>项目'123``134``152``178``189`
#>        
#> 1 10000  0.2   0     0     0        0
#> 2 10001  0     0.98  0.02  0        0
#> 3 10002  0.68  0     0     0.32     0
#> 4 10003  1     0     0     0        0
#> 5 10004  0     0     0     0        1
由(v1.0.0)于2021年2月25日创建

使用数据表

库(data.table)
setDT(df)
dcast(数据=df,公式=Item~Code,value.var=“百分比”,填充=0)
#>项目123 134 152 178 189
#> 1: 10000 0.20 0.00 0.00 0.00   0
#> 2: 10001 0.00 0.98 0.02 0.00   0
#> 3: 10002 0.68 0.00 0.00 0.32   0
#> 4: 10003 1.00 0.00 0.00 0.00   0
#> 5: 10004 0.00 0.00 0.00 0.00   1

由(v1.0.0)于2021年2月25日创建,问题是它需要按“代码”和“项目”进行分组

library(dplyr)
library(tidyr)
df %>%
   group_by(Code, Item) %>%
   mutate(n = row_number()) %>%
   ungroup %>%
   spread(Code, Percentage, fill = 0) %>%
   select(-n)
-输出

# A tibble: 5 x 6
#   Item `123` `134` `152` `178` `189`
#  <int> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 10000  0.2   0     0     0        0
#2 10001  0     0.98  0.02  0        0
#3 10002  0.68  0     0     0.32     0
#4 10003  1     0     0     0        0
#5 10004  0     0     0     0        1
#一个tible:5 x 6
#项目'123``134``152``178``189`
#       
#1 10000  0.2   0     0     0        0
#2 10001  0     0.98  0.02  0        0
#3 10002  0.68  0     0     0.32     0
#4 10003  1     0     0     0        0
#5 10004  0     0     0     0        1

问题是它需要同时按“代码”和“项目”进行分组

library(dplyr)
library(tidyr)
df %>%
   group_by(Code, Item) %>%
   mutate(n = row_number()) %>%
   ungroup %>%
   spread(Code, Percentage, fill = 0) %>%
   select(-n)
-输出

# A tibble: 5 x 6
#   Item `123` `134` `152` `178` `189`
#  <int> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 10000  0.2   0     0     0        0
#2 10001  0     0.98  0.02  0        0
#3 10002  0.68  0     0     0.32     0
#4 10003  1     0     0     0        0
#5 10004  0     0     0     0        1
#一个tible:5 x 6
#项目'123``134``152``178``189`
#       
#1 10000  0.2   0     0     0        0
#2 10001  0     0.98  0.02  0        0
#3 10002  0.68  0     0     0.32     0
#4 10003  1     0     0     0        0
#5 10004  0     0     0     0        1

plyr已经退休几年了。您可以使用tidyr实现这一点,它还将语法从
spread
更新为
pivot\u-wider
。在同一个任务中有很多问题;我会挖一些来回答你的问题吗?也看看大家好!非常感谢你的帮助!这两种选择对我来说都很容易!真的很感激!:)plyr已经退休几年了。您可以使用tidyr实现这一点,它还将语法从
spread
更新为
pivot\u-wider
。在同一个任务中有很多问题;我会挖一些来回答你的问题吗?也看看大家好!非常感谢你的帮助!这两种选择对我来说都很容易!真的很感激!:)