繁体   English   中英

数据框使用dplyr整形/转置

[英]Dataframe reshape/transpose using dplyr

我有以下格式的数据框原始格式

对于给定的ID; 年龄,性别和地位保持不变。

我想做几个转换

  1. 每个“ Id”和“ Type”都有一行。
  2. 在“平板电脑”列中找到唯一值,然后进行转置。
  3. 转置“级别”列,并在新转置的数位板列下具有与每个数位板对应的值。空单元格必须用“ NA”填充。

所需的输出格式附在下面以供参考。 所需格式

我试过使用dcast和reshape; tidyr和dplyr使用聚集和传播,但是无法实现第三次转换

任何帮助将是巨大的! 谢谢

您可以在tidyr包中使用spread()函数:

设置软件包和数据:

library(dplyr)
library(tidyr)


 df=data.frame(
  id=c(1,1,1,1,1,2,2),
  age=c(3,3,3,3,3,51,51),
  sex=c('f','f','f','f','f','m','m'),
  type=c('a','a','a','b','b','a','a'),
  tablet=c('t1','t2','t3','t1','t5','t3','t10'),
  level=c(1,2,3,1,4,2,3),
  status=c('n','n','n','n','n','y','y')
  )

使用group_by()通过ID和类型获得结果。

使用spread()将数据与包含列名键的tablet列和包含值的level列进行转置。 默认情况下, spread()将使用NA填充空白。

使用select()将列重新排列为所需的格式:

df %>% 
  group_by(id,type) %>% 
  spread(tablet, level) %>% 
  select(id,age,sex,type,t1,t2,t3,t5,t10,status)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM