I have the following dataframe total_authority
structure(list(country = c("Albania", "Algeria", "American Somoa",
"Angola", "Anguilla", "Antigua", "Argentina", "Armenia", "Aruba",
"Australia"), `1994` = c(0.0000000000000000312250225675825, 0.0000000000000000312250225675825,
0.0000000000000000312250225675825, 0.0000000000000000312250225675825,
0.0000000000000000312250225675825, 0.0000000000000000312250225675825,
0.00289122132708816, 0.0000000000000000312250225675825, 0.00000528966979389429,
0.00622391681538348), country.1 = c("Albania", "Algeria", "American Somoa",
"Angola", "Anguilla", "Antigua", "Argentina", "Armenia", "Aruba",
"Australia"), `1995` = c(0.00000320558770721281, 0.0000000000000000277555756156289,
0.0000000000000000277555756156289, 0.0000000000000000277555756156289,
0.0000000000000000277555756156289, 0.0000000000000000277555756156289,
0.0224538010858487, 0.0000000000000000277555756156289, 0.0000000000000000277555756156289,
0.407633483379219)), row.names = c(NA, 10L), class = "data.frame")
which I would like to rearrange in such a way the first column contains the countries, the second denotes the year and the third the value scored by the countries in that year.
Visually, the dataframe total_authority is now
country 1994 country.1 1995
1 Albania 0.00000000000000003122502 Albania 0.00000320558770721280500
2 Algeria 0.00000000000000003122502 Algeria 0.00000000000000002775558
3 American Somoa 0.00000000000000003122502 American Somoa 0.00000000000000002775558
4 Angola 0.00000000000000003122502 Angola 0.00000000000000002775558
5 Anguilla 0.00000000000000003122502 Anguilla 0.00000000000000002775558
6 Antigua 0.00000000000000003122502 Antigua 0.00000000000000002775558
7 Argentina 0.00289122132708816148572 Argentina 0.02245380108584869860433
8 Armenia 0.00000000000000003122502 Armenia 0.00000000000000002775558
9 Aruba 0.00000528966979389429437 Aruba 0.00000000000000002775558
10 Australia 0.00622391681538347896208 Australia 0.40763348337921861963551
The desired result is instead:
country score year
Albania 0.00000000000000003122502 1994
Algeria 0.00000000000000003122502 1994
American Somoa 0.00000000000000003122502 1994
Angola 0.00000000000000003122502 1994
Anguilla 0.00000000000000003122502 1994
Antigua 0.00000000000000003122502 1994
Argentina 0.00289122132708816148572 1994
Armenia 0.00000000000000003122502 1994
Aruba 0.00000528966979389429437 1994
Australia 0.00622391681538347896208 1994
Albania 0.00000320558770721280500 1995
Algeria 0.00000000000000002775558 1995
American Somoa 0.00000000000000002775558 1995
Angola 0.00000000000000002775558 1995
Anguilla 0.00000000000000002775558 1995
Antigua 0.00000000000000002775558 1995
Argentina 0.02245380108584869860433 1995
Armenia 0.00000000000000002775558 1995
Aruba 0.00000000000000002775558 1995
Australia 0.40763348337921861963551 1995
This is my attempt (count index of the for loop ranges between 1 and 2 but it is just an example):
actors<-c("Albania", "Algeria", "American Somoa", "Angola", "Anguilla", "Antigua", "Argentina", "Armenia", "Aruba", "Australia")
final_output<-data.frame()
for (count in 1:2) {
df <- data.frame(country=actors)
df$year=rep(names(total_authority)[2*count],nrow(df))
df$authority<-total_authority[2*count]
final_output <- rbind(final_output, df)
}
Anyway, I obtained the following error:
Error in `.rowNamesDF<-`(x, value = value) :
'row.names' duplicate are not allowed.
In addition: Warning message:
non-unique values when setting 'row.names': ‘1’, ‘10’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’