如何将一列的值重新定位到不同名称下的多个不同列中?[复制]

How can I relocate the values of one column into many different columns under different names? [duplicate]

提问人:Anas116 提问时间:7/27/2023 最后编辑:Anas116 更新时间:7/27/2023 访问量:38

问:

假设我有这个 df(但有数千个 ID 和数十次治疗)

df = data.frame(ID = c(1,1,1,2,2,2,2,2),
                treatment = c('AB','CD','EF','AB','CD','GH','IM','LN') )

我希望获得以下输出

   ID treatment_1 treatment_2 treatment_3 treatment_4 treatment_5
1  1          AB          CD          EF        <NA>        <NA>
2  2          AB          CD          GH          IM          LN

我不想要什么

    ID   .by Treatment_1 Treatment_2 Treatment_3 Treatment_4 Treatment_5 Treatment_6 Treatment_7 Treatment_8
  <dbl> <dbl> <chr>       <chr>       <chr>       <chr>       <chr>       <chr>       <chr>       <chr>      
1     1     1 AB          CD          EF          NA          NA          NA          NA          NA         
2     2     2 NA          NA          NA          AB          CD          GH          IM          LN  
R DataFrame 变量

评论

1赞 Maël 7/27/2023
library(dplyr); library(tidyr); df %>% mutate(rown = row_number(), .by = ID) %>% pivot_wider(names_from = "rown", values_from = "treatment", names_prefix = "Treatment_")
2赞 Allan Cameron 7/27/2023
从长格式切换到宽格式可能会使您的分析更加困难。您确定需要切换到该格式吗?你甚至可以为每种治疗留一列,表明受试者是否接受了这种治疗会更好吗?像这样的东西 ?table(ID = df$ID, treatment = df$treatment) == 1
0赞 Anas116 7/27/2023
不幸的是,不,它不会以这种方式工作,因为我的变量有一百种不同的类别
2赞 MrFlick 7/27/2023
输出有何不同?Mael 提供的代码生成的输出在我看来就像您想要的输出。
1赞 lotus 7/27/2023
您应该更新并重试。代码正确,但您的版本已过期,无法识别进行分组计算的参数。或者使用较旧的函数。dplyrdplyr.bygroup_by()

答: 暂无答案