wide to long

https://www.reddit.com/r/RStudio/comments/xwlioq/changing_widepanel_to_longpanel_data_using_only/?ref=share&ref_source=link
 avatar
unknown
r
2 years ago
2.1 kB
25
Indexable
# data
# name it "toy_data.txt"
REGION DIVISION STATE NAME Pop_2000 Pop_2001 Pop_2002 Pop_2003 Pop_2004 Pop_2005 Pop_2006 Pop_2007 Pop_2008 Pop_2009 Pop_2010 3 6 1 Alabama 4452173 4467634 4480089 4503491 4530729 4569805 4628981 4672840 4718206 4757938 4785298 4 9 2 Alaska 627963 633714 642337 648414 659286 666946 675302 680300 687455 698895 713985 4 8 4 Arizona 5160586 5273477 5396255 5510364 5652404 5839077 6029141 6167681 6280362 6343154 6413737 3 7 5 Arkansas 2678588 2691571 2705927 2724816 2749686 2781097 2821761 2848650 2874554 2896843 2921606 4 9 6 California 33987977 34479458 34871843 35253159 35574576 35827943 36021202 36250311 36604337 36961229 37349363 4 8 8 Colorado 4326921 4425687 4490406 4528732 4575013 4631888 4720423 4803868 4889730 4972195 5049071 1 1 9 Connecticut 3411777 3432835 3458749 3484336 3496094 3506956 3517460 3527270 3545579 3561807 3577073 3 5 10 Delaware 786373 795699 806169 818003 830803 845150 859268 871749 883874 891730 899769 3 5 11 "District of Columbia" 572046 574504 573158 568502 567754 567136 570681 574404 580236 592228 604453 3 5 12 Florida 16047515 16356966 16689370 17004085 17415318 17842038 18166990 18367842 18527305 18652644 18843326 3 5 13 Georgia 8227303 8377038 8508256 8622793 8769252 8925922 9155813 9349988 9504843 9620846 9712587 4 9 15 Hawaii 1213519 1225948 1239613 1251154 1273569 1292729 1309731 1315675 1332213 1346717 1363621 4 8 16 Idaho 1299430 1319962 1340372 1363380 1391802 1428241 1468669 1505105 1534320 1554439 1571450 2 3 17 Illinois 12434161 12488445 12525556 12556006 12589773 12609903 12643955 12695866 12747038 12796778 12843166


df <- read.delim("toy_data.txt", header = F, col.names = paste0("V", 1:15), sep = " ")

names(df) <- as.vector(df[1,])

df1 <- df[-1,]

state <- df1[,1:4]
  
pop <- df1[,5:15]

temp1 <- state[rep(seq_len(nrow(state)), each = ncol(pop)), ]

temp2 <- t(pop)

li <- vector("list", ncol(temp2))

for (i in 1:ncol(temp2)) {
  li[[i]] <- temp2[,i]
}

pop2 <- data.frame("var" = names(unlist(li)), "value" = unlist(li))

long_df <- cbind(temp1, pop2)
Editor is loading...