簡體   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