Я отчаянно пытаюсь заполнить матрицу значениями из фрейма данных. Это торговые данные, так что кадр данных выглядит следующим образом:Как заполнить пустую матрицу значениями данных
country1 country2 value
1 Afghanistan Albania 30
2 Afghanistan Albania 81
3 Afghanistan China 5
4 Albania Germany 6
5 China Germany 8
6 China Turkey 900
7 Germany Turkey 12
8 Germany USA 3
9 Germany Zambia 700
Использование уникального и сортировки команд я создал список из всех стран, которые происходят в ДФ (и превратили его в матрицу):
countries_sorted
[1,] "Afghanistan"
[2,] "Albania"
[3,] "China"
[4,] "Germany"
[5,] "Turkey"
[6,] "USA"
[7,] "Zambia"
Используя этот «список», я создал пустые торговую матрицу (7x7):
Afghanistan Albania China Germany Turkey USA Zambia
Afghanistan NA NA NA NA NA NA NA
Albania NA NA NA NA NA NA NA
China NA NA NA NA NA NA NA
Germany NA NA NA NA NA NA NA
Turkey NA NA NA NA NA NA NA
USA NA NA NA NA NA NA NA
Zambia NA NA NA NA NA NA NA
Я безнадежно неисправный, чтобы заполнить эту матрицу с номерами/суммы от я e значение столбца df. я пытался что-то вроде этого:
a<-cast(df, country1~country2 , sum)
, который работает до такой степени, НО матрица не сохраняет свой первоначальный формат 7x7, который является то, что мне нужно иметь матрицу, где диагональ все 0s.
> a
country1 Albania China Germany Turkey USA Zambia
1 Afghanistan 111 5 0 0 0 0
2 Albania 0 0 6 0 0 0
3 China 0 0 8 900 0 0
4 Germany 0 0 0 12 3 700
Пожалуйста, любой, у кого есть решение ????
Мне не понравилось, что мы использовали умный подход 'rbind' (с 0' value') вместо объединения кадров данных. Может быть быстрее, когда есть больше данных, верно? – AntoniosK
@ AntoniosK Хммм «rbind» имеет плохую репутацию с точки зрения эффективности из-за семантики copy-on-modify (требуется больше памяти и делает ее медленнее). Функция 'left_join', которую вы используете с' dplyr', определенно более эффективна. Теперь, с точки зрения скорости, в этом случае я перебираю только два data.frames, поэтому я не уверен, какой из них будет быстрее (вероятно, 'left_join'), но' dplyr' будет более эффективным, когда есть ограничения с RAM , Kai kali mas mera Antwni :) – LyzandeR
Отлично. Полезно знать @LyzandeR. (Twra me koufanes! Kali mas mera file ...) – AntoniosK