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
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
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
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=