Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.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
如何使用多变量在tidyverse中使用spread函数?_R_Dplyr_Tidyverse - Fatal编程技术网

如何使用多变量在tidyverse中使用spread函数?

如何使用多变量在tidyverse中使用spread函数?,r,dplyr,tidyverse,R,Dplyr,Tidyverse,我正在尝试使用tidyverse中的spread函数处理以下数据的不同方法,但没有成功。其目的是为变量中的值(health、ci_high、ci_low)的每个id 1和0提供一个新列 id unemployment health ci_high ci_low 1 5 100 110 90 1 10 80 90 70 1 15 70 80

我正在尝试使用tidyverse中的spread函数处理以下数据的不同方法,但没有成功。其目的是为变量中的值(health、ci_high、ci_low)的每个id 1和0提供一个新列

id  unemployment    health  ci_high ci_low
1   5                 100   110       90
1   10                 80   90        70
1   15                 70   80        60
0   5                  90   100       80
0   10                 50   60        40
0   15                 40   50        30

structure(list(id = structure(c(1, 1, 1, 0, 0, 0), format.stata = "%9.0g"), 
    unemployment = structure(c(5, 10, 15, 5, 10, 15), format.stata = "%9.0g"), 
    health = structure(c(100, 80, 70, 90, 50, 40), format.stata = "%9.0g"), 
    ci_high = structure(c(110, 90, 80, 100, 60, 50), format.stata = "%9.0g"), 
    ci_low = structure(c(90, 70, 60, 80, 40, 30), format.stata = "%9.0g")), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))
我希望得到如下输出:

unemployment    health_id1  health_id0  ci_high_id1 ci_high_id0 ci_low_id1  ci_low_id0
5                    100        90            110         100        90        80
10                   80         50             90         60         70        40
15                   70         40             80         50         60        30

有人能给我引路吗?

使用
pivot\u

pivot_wider(df, unemployment, names_from = id, values_from = c("health", "ci_high", "ci_low"), names_prefix = "id")

# A tibble: 3 x 7
  unemployment health_id1 health_id0 ci_high_id1 ci_high_id0 ci_low_id1 ci_low_id0
         <dbl>      <dbl>      <dbl>       <dbl>       <dbl>      <dbl>      <dbl>
1            5        100         90         110         100         90         80
2           10         80         50          90          60         70         40
3           15         70         40          80          50         60         30
dt <- as.data.table(df)
dcast(dt, unemployment ~ id, value.var = c("health", "ci_high", "ci_low"))

   unemployment health_0 health_1 ci_high_0 ci_high_1 ci_low_0 ci_low_1
1:            5       90      100       100       110       80       90
2:           10       50       80        60        90       40       70
3:           15       40       70        50        80       30       60