Introduction

Reshaping Data is about changing the way data is organized into rows and columns. There are situations when we need convert data to Long Form from Wide Form (and vice versa).

Examples of Resharping Data

We use tidyr::pivot_longer() for converting to long from wide:

# Generate a fake data for purpose of explanation: 

set.seed(29)
df_wide <- data.frame(time_month = rep(c(1, 2), time = 2, each = 1),
                      firm_name = rep(c("A", "B"), time = 1, each = 2), 
                      roe = rnorm(4), 
                      roa = rnorm(4))
# Show data: 
library(knitr)
library(magrittr)

df_wide %>% 
  kable(caption = "Table 1: Data Frame in Wide Form")
Table 1: Data Frame in Wide Form
time_month firm_name roe roa
1 A -1.2833712 -1.1750246
2 A -1.2634498 2.1104419
1 B 0.2146729 -0.5214171
2 B 0.9469490 -0.9300566
# Convert to long form data frame: 
library(tidyr)

df_wide %>% 
  pivot_longer(cols = c("roe", "roa"), names_to = "type", values_to = "value") -> df_long

# Show data: 

df_long %>% 
  kable(caption = "Table 2: Data Frame in Long Form")
Table 2: Data Frame in Long Form
time_month firm_name type value
1 A roe -1.2833712
1 A roa -1.1750246
2 A roe -1.2634498
2 A roa 2.1104419
1 B roe 0.2146729
1 B roa -0.5214171
2 B roe 0.9469490
2 B roa -0.9300566

We use tidyr::pivot_wider() for converting to wide from long:

# Convert to wide form (or original form): 

df_long %>% 
  pivot_wider(names_from = type, values_from = value) -> to_df_wide

# Compare: 

to_df_wide %>% 
  kable(caption = "Table 3: Data after Converting from Long Form")
Table 3: Data after Converting from Long Form
time_month firm_name roe roa
1 A -1.0390170 1.7785191
2 A -0.7982752 -0.6844104
1 B -1.2531739 0.9564729
2 B -0.7472431 -0.4286218

This post illustrates the power of R in its ability to reshape data. These two examples show common examples of reshaping data, but do not exhaustively demonstrate the different kinds of data reshaping that you could encounter.

LS0tDQp0aXRsZTogJ1Jlc2hhcGluZyBEYXRhIGZyb20gV2lkZSB0byBMb25nIChhbmQgVmljZSBWZXJzYSknDQphdXRob3I6ICdBdXRob3I6IE5ndXllbiBDaGkgRHVuZycNCnN1YnRpdGxlOiAiUiBEYXRhIFdyYW5nbGluZyBTZXJpZXMiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICAjIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGhpZ2hsaWdodDogemVuYnVybg0KICAgICMgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0aGVtZTogImZsYXRseSINCiAgICB0b2M6IFRSVUUNCiAgICB0b2NfZmxvYXQ6IFRSVUUNCi0tLQ0KDQpgYGB7ciBzZXR1cCxpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgY2FjaGUgPSBUUlVFKQ0KDQpgYGANCg0KDQojIEludHJvZHVjdGlvbg0KDQoNClJlc2hhcGluZyBEYXRhIGlzIGFib3V0IGNoYW5naW5nIHRoZSB3YXkgZGF0YSBpcyBvcmdhbml6ZWQgaW50byByb3dzIGFuZCBjb2x1bW5zLiBUaGVyZSBhcmUgc2l0dWF0aW9ucyB3aGVuIHdlIG5lZWQgY29udmVydCBkYXRhIHRvIExvbmcgRm9ybSBmcm9tIFdpZGUgRm9ybSAoYW5kIHZpY2UgdmVyc2EpLiANCg0KDQojIEV4YW1wbGVzIG9mIFJlc2hhcnBpbmcgRGF0YQ0KDQpXZSB1c2UgYHRpZHlyOjpwaXZvdF9sb25nZXIoKWAgZm9yIGNvbnZlcnRpbmcgdG8gbG9uZyBmcm9tIHdpZGU6IA0KDQpgYGB7cn0NCg0KIyBHZW5lcmF0ZSBhIGZha2UgZGF0YSBmb3IgcHVycG9zZSBvZiBleHBsYW5hdGlvbjogDQoNCnNldC5zZWVkKDI5KQ0KZGZfd2lkZSA8LSBkYXRhLmZyYW1lKHRpbWVfbW9udGggPSByZXAoYygxLCAyKSwgdGltZSA9IDIsIGVhY2ggPSAxKSwNCiAgICAgICAgICAgICAgICAgICAgICBmaXJtX25hbWUgPSByZXAoYygiQSIsICJCIiksIHRpbWUgPSAxLCBlYWNoID0gMiksIA0KICAgICAgICAgICAgICAgICAgICAgIHJvZSA9IHJub3JtKDQpLCANCiAgICAgICAgICAgICAgICAgICAgICByb2EgPSBybm9ybSg0KSkNCiMgU2hvdyBkYXRhOiANCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KG1hZ3JpdHRyKQ0KDQpkZl93aWRlICU+JSANCiAga2FibGUoY2FwdGlvbiA9ICJUYWJsZSAxOiBEYXRhIEZyYW1lIGluIFdpZGUgRm9ybSIpDQoNCiMgQ29udmVydCB0byBsb25nIGZvcm0gZGF0YSBmcmFtZTogDQpsaWJyYXJ5KHRpZHlyKQ0KDQpkZl93aWRlICU+JSANCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBjKCJyb2UiLCAicm9hIiksIG5hbWVzX3RvID0gInR5cGUiLCB2YWx1ZXNfdG8gPSAidmFsdWUiKSAtPiBkZl9sb25nDQoNCiMgU2hvdyBkYXRhOiANCg0KZGZfbG9uZyAlPiUgDQogIGthYmxlKGNhcHRpb24gPSAiVGFibGUgMjogRGF0YSBGcmFtZSBpbiBMb25nIEZvcm0iKQ0KYGBgDQoNCldlIHVzZSBgdGlkeXI6OnBpdm90X3dpZGVyKClgIGZvciBjb252ZXJ0aW5nIHRvIHdpZGUgZnJvbSBsb25nOiANCg0KYGBge3J9DQojIENvbnZlcnQgdG8gd2lkZSBmb3JtIChvciBvcmlnaW5hbCBmb3JtKTogDQoNCmRmX2xvbmcgJT4lIA0KICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gdHlwZSwgdmFsdWVzX2Zyb20gPSB2YWx1ZSkgLT4gdG9fZGZfd2lkZQ0KDQojIENvbXBhcmU6IA0KDQp0b19kZl93aWRlICU+JSANCiAga2FibGUoY2FwdGlvbiA9ICJUYWJsZSAzOiBEYXRhIGFmdGVyIENvbnZlcnRpbmcgZnJvbSBMb25nIEZvcm0iKQ0KDQpgYGANCg0KVGhpcyBwb3N0IGlsbHVzdHJhdGVzIHRoZSBwb3dlciBvZiBSIGluIGl0cyBhYmlsaXR5IHRvIHJlc2hhcGUgZGF0YS4gVGhlc2UgdHdvIGV4YW1wbGVzIHNob3cgY29tbW9uIGV4YW1wbGVzIG9mIHJlc2hhcGluZyBkYXRhLCBidXQgZG8gbm90IGV4aGF1c3RpdmVseSBkZW1vbnN0cmF0ZSB0aGUgZGlmZmVyZW50IGtpbmRzIG9mIGRhdGEgcmVzaGFwaW5nIHRoYXQgeW91IGNvdWxkIGVuY291bnRlci4NCg0KDQo=