簡體   English   中英

使用R重塑每個唯一類別在新列中分類的數據框位置

[英]Reshape dataframe place categorical in new column for each unique category using R

假設我有以下數據框

 test <- data.frame(items = c("itemA", "itemB","itemC", "itemD"),
          ID = c("1","2","1","3"),
          time = c("11","12","11","13"))

> test
     items ID time
   1 itemA  1   11
   2 itemB  2   12
   3 itemC  1   11
   4 itemD  3   13

我正在嘗試重塑它,使其在ID上折疊。 對於每個唯一項,應創建一列,並且應在每列中添加適當的項,以使在任何一項中,只有一項。 即itemA不應與itemB在同一列中。

這是我正在尋找的樣本:

> test
     ID time Item1   Item2   Item3    Item4
   1 1   11   itemA    -      itemC    -
   2 2   12    -      itemB    -       -
   4 3   13    -        -      -      itemD  

任何幫助表示贊賞!

我們可以使用tidyverse創建一個序列列,然后spread為“寬”格式

library(tidyverse)
test %>%      
   mutate(rn = paste0("Item", row_number())) %>% 
   spread(rn, items)
# ID time Item1 Item2 Item3 Item4
#1  1   11 itemA  <NA> itemC  <NA>
#2  2   12  <NA> itemB  <NA>  <NA>
#3  3   13  <NA>  <NA>  <NA> itemD

data.table通常會更快...如果您可以使用略有不同的列名,請嘗試一下

library( data.table )
dcast( setDT( test ), ID + time ~ items, value.var = "items" )

#    ID time itemA itemB itemC itemD
# 1:  1   11 itemA  <NA> itemC  <NA>
# 2:  2   12  <NA> itemB  <NA>  <NA>
# 3:  3   13  <NA>  <NA>  <NA> itemD

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM