![](/img/trans.png)
[英]Reshape dataframe in R using values in 1 column as column names in new dataframe
[英]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.