# New DataFrame whose columns are values of a column and grouped by another column

**URL:** <https://discourse.julialang.org/t/new-dataframe-whose-columns-are-values-of-a-column-and-grouped-by-another-column/61137>\
**Category:** General Usage\
**Tags:** dataframes\
**Created:** [May 14, 2021, 10:01am UTC](https://discourse.julialang.org/t/new-dataframe-whose-columns-are-values-of-a-column-and-grouped-by-another-column/61137 "2021-05-14T10:01:06Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ali\_Vahdati](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ali_vahdati/32/38715_2.png) [@Ali\_Vahdati](https://discourse.julialang.org/u/Ali_Vahdati)\
**Post date:** [May 14, 2021, 10:01am UTC](https://discourse.julialang.org/t/new-dataframe-whose-columns-are-values-of-a-column-and-grouped-by-another-column/61137/1 "2021-05-14T10:01:06Z")

</div>

How can I convert `df1` to `df2`:

```julia
julia> df1 = DataFrame(:name => ["a", "b", "c", "c", "a", "b"], :count => [1,4,3,6,3,7], :time => [1,1,1,2,2,2])
6×3 DataFrame
 Row │ name count time  
     │ String Int64 Int64 
─────┼──────────────────────
   1 │ a 1 1
   2 │ b 4 1
   3 │ c 3 1
   4 │ c 6 2
   5 │ a 3 2
   6 │ b 7 2

julia> df2= DataFrame(:a => [1, 3], :b=> [4, 7], :c => [3, 6], time => [1,2])
2×4 DataFrame
 Row │ a b c time  
     │ Int64 Int64 Int64 Int64 
─────┼────────────────────────────
   1 │ 1 4 3 1
   2 │ 3 7 6 2

```

---

<div class="post-metadata">

**Author:** ![sijo](https://avatars.discourse-cdn.com/v4/letter/s/da6949/32.png) [@sijo](https://discourse.julialang.org/u/sijo)\
**Post date:** [May 14, 2021, 10:11am UTC](https://discourse.julialang.org/t/new-dataframe-whose-columns-are-values-of-a-column-and-grouped-by-another-column/61137/2 "2021-05-14T10:11:19Z")

</div>

This is called converting from long format to wide format. You can use `unstack` for this (and `stack` to go the other way):

```julia
julia> unstack(df1, :name, :count)
2×4 DataFrame
 Row │ time a b c      
     │ Int64 Int64? Int64? Int64? 
─────┼───────────────────────────────
   1 │ 1 1 4 3
   2 │ 2 3 7 6

```

(and `unstack(df1, :name, :count) |> disallowmissing` will get rid of the `Union{Missing, ...}` column types.)

---

<div class="post-metadata">

**Author:** ![Ali\_Vahdati](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ali_vahdati/32/38715_2.png) [@Ali\_Vahdati](https://discourse.julialang.org/u/Ali_Vahdati)\
**Post date:** [May 14, 2021, 10:37am UTC](https://discourse.julialang.org/t/new-dataframe-whose-columns-are-values-of-a-column-and-grouped-by-another-column/61137/3 "2021-05-14T10:37:30Z")

</div>

Nice! Thank you!
