[R] Simple Stacking of Two Columns

Sparks, John j@p@rk4 @end|ng |rom u|c@edu
Mon Apr 3 17:08:59 CEST 2023


Hi R-Helpers,

Sorry to bother you, but I have a simple task that I can't figure out how to do.

For example, I have some names in two columns

NamesWide<-data.frame(Name1=c("Tom","Dick"),Name2=c("Larry","Curly"))

and I simply want to get a single column
NamesLong<-data.frame(Names=c("Tom","Dick","Larry","Curly"))
> NamesLong
  Names
1   Tom
2  Dick
3 Larry
4 Curly


Stack produces an error
NamesLong<-stack(NamesWide$Name1,NamesWide$Names2)
Error in if (drop) { : argument is of length zero

So does bind_rows
> NamesLong<-dplyr::bind_rows(NamesWide$Name1,NamesWide$Name2)
Error in `dplyr::bind_rows()`:
! Argument 1 must be a data frame or a named atomic vector.
Run `rlang::last_error()` to see where the error occurred.

I tried making separate dataframes to get around the error in bind_rows but it puts the data in two different columns
Name1<-data.frame(c("Tom","Dick"))
Name2<-data.frame(c("Larry","Curly"))
NamesLong<-dplyr::bind_rows(Name1,Name2)
> NamesLong
  c..Tom....Dick.. c..Larry....Curly..
1              Tom                <NA>
2             Dick                <NA>
3             <NA>               Larry
4             <NA>               Curly

gather makes no change to the data
NamesLong<-gather(NamesWide,Name1,Name2)
> NamesLong
  Name1 Name2
1   Tom Larry
2  Dick Curly


Please help me solve what should be a very simple problem.

Thanks,
John Sparks





	[[alternative HTML version deleted]]



More information about the R-help mailing list