按 id reshape 并保持其他变量固定

标签 r pivot reshape

我想做的是重新排序数据在列中的数据,但保留其余变量

       c1<- c("ID","Location", "Year","Gender", "MoneySpent", "MoneyWithCreditCard")
         c2<- c(1,"EEUU",2007,"M",1500,400)
         c3<- c(1,"EEUU",2008,"M",3900,0)
         c4<- c(1,"EEUU",2009,"M",0,100)
         c5<- c(2,"Germany",2007,"F",0,1000)
         c6<- c(2,"Germany",2008,"F",4000,500)
         c7<- c(2,"Germany",2009,"F",700,0)
         c8<- c(2,"Germany",2010,"F",0,50)
         Df<-data.frame(rbind(c2,c3,c4,c5,c6,c7,c8))
         colnames(Df)<-c1   

#   ID Location Year Gender MoneySpent   MoneyWithCreditCard   TypeofHome
#c2  1     EEUU 2007      M       1500        400                House
#c3  1     EEUU 2008      M       3900         0                 House
#c4  1     EEUU 2009      M          0        100                House
#c5  2  Germany 2007      F          0        1000               Department
#c6  2  Germany 2008      F       4000        500                Department
#c7  2  Germany 2009      F        700         0                 Department
#c8  2  Germany 2010      F          0         50                Department

我需要的结果是这个:

# ID Location Gender TypeofHome MS.2007 MS.2008 MS.2009 MS.2010 MWC.2007 MWC.2008 MWC.2009 MWC.2010
# 1   EEUU      M      House     1500    3900      0      NA      400       0        100     NA
# 2   Germany   F      Department 0      4000     700      0     1000      500       0       50

哪个是更好的解决方案?谢谢顺便说一句!

最佳答案

这将重命名原始数据中的列,因此只需要一个数据透视表:

library(dplyr)
library(tidyr)

Df %>%
  rename(MS = MoneySpent, MWC = CreditCard) %>%
  pivot_wider(names_from = c("Year"),
              values_from = c("MS", "MWC"))
# # A tibble: 2 x 11
#   ID    Location Gender MS_2007 MS_2008 MS_2009 MS_2010 MWC_2007 MWC_2008 MWC_2009 MWC_2010
#   <fct> <fct>    <fct>  <fct>   <fct>   <fct>   <fct>   <fct>    <fct>    <fct>    <fct>   
# 1 1     EEUU     M      1500    3900    0       NA      400      0        100      NA      
# 2 2     Germany  F      0       4000    700     0       1000     500      0        50 

关于按 id reshape 并保持其他变量固定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59617107/

相关文章:

python - 如何旋转数据框

r - 将多列合并为一列

将多组测量列(宽格式) reshape 为单列(长格式)

使用跨替换 group_by_at(NULL)

r - 测量R中的峰值内存使用率

sql - Postgres 列到行

r - 使用来自包 `modifiedmk` 的统计信息在 R 中创建汇总表

使用两个因子重新排列 R 中的矩阵

r - 使用 data.table[,,by=...] 时包括所有排列

r - 如何确保testthat单元测试中的英文错误消息