For reshaping, I normally use: # Wide to long > data = data.frame("Country" = c("A", "B", "C"), "v1999" = c("0.7K", "37K", "212K"), "v2000" = c("2K", "80K", "213K")) saveRDS(data, file = "C:/Users/cwil119/Documents/mydata.rds") # Long to wide > data = data.frame("Country" = c("Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Brazil", "Brazil", "Brazil", "Brazil", "China", "China", "China", "China"), "Year" = c(1999,1999,2000,2000,1999,1999,2000,2000,1999,1999,2000,2000), "Type" = c("cases", "population", "cases", "population", "cases", "population", "cases", "population", "cases", "population", "cases", "population"), "Count" = c(745,19987071,2666,20595360,37737,172006362,80488,174504898,212258,1272915272,213766,1280428583)) For separating, I use: > data = data.frame("B" = c("hi", "hello", "bye"), "A" = c("A-0.7K-2K/D-0.2K-3K", "B_37K", "C")) For uniting, any dataset would work. For joining I have attached the csv file below. Both "Join" and "Join1" contain the exact same columns "x1" and "x2". And they both contain a categorical column "x3" but have different values. And "Join" has the "x5" column which contains numeric values whereas "Join2" has the "x4" column that contains logical values. For appending new rows, any dataset would work as well. For date-times operations, I normally use the Paris dataset attached below.