I took all dates as a separate data df1 and remaining columns as another data with unique rows df2. Applied crossing() on these 2 datasets and have now the required set of data. Still large, but works for now.
df <- crossing(df1, df2)
Thanks @nirgrahamuk and thanks @FJCC for guiding me on this throughout. Really appreciate it!