Mam dane próbkowania rozłożone na dwa zestawy danych. loc
opisuje pozycje geograficzne, spe
zawiera znalezione gatunki. Unfortunally, stacje pobierania próbek są opisane przez dwa czynniki (cruise
i station
), więc trzeba zbudować unikalne identyfikatory dla obu zestawów danychczynniki odwzorowujące na ramkę danych
>loc
cruise station lon lat
1 TY1 A1 53.8073 6.7836
2 TY1 3 53.7757 6.7009
3 AZ7 A1 53.7764 6.6758
i
>spe
cruise station species abundance
1 TY1 A1 Ensis ensis 100
2 TY1 A1 Magelona 5
3 TY1 A1 Nemertea 17
4 TY1 3 Magelona 8
5 TY1 3 Ophelia 1200
6 AZ7 A1 Ophelia 950
7 AZ7 A1 Ensis ensis 89
8 AZ7 A1 Spio 1
co potrzebne jest aby dodać unikalny identyfikator ID
jako taki
cruise station species abundance ID
1 TY1 A1 Ensis ensis 100 STA0001
2 TY1 A1 Magelona 5 STA0001
3 TY1 A1 Nemertea 17 STA0001
4 TY1 3 Magelona 8 STA0002
5 TY1 3 Ophelia 1200 STA0002
6 AZ7 A1 Ophelia 950 STA0003
7 AZ7 A1 Ensis ensis 89 STA0003
8 AZ7 A1 Spio 1 STA0003
Oto dane
loc<-data.frame(cruise=c("TY1","TY1","AZ7"),station=c("A1",3,"A1"),lon=c(53.8073, 53.7757, 53.7764),lat=c(6.7836, 6.7009, 6.6758))
spe<-data.frame(cruise=c(rep("TY1",5),rep("AZ7",3)),station=c(rep("A1",3),rep(3,2),rep("A1",3)),species=c("Ensis ensis", "Magelona", "Nemertea", "Magelona", "Ophelia", "Ophelia","Ensis ensis", "Spio"),abundance=c(100,5,17,8,1200,950,89,1))
Potem skonstruować ID
dla loc
loc$ID<-paste("STA",formatC(1:nrow(loc),width=4,format="d",flag="0"),sep="")
ale jak mogę mapować ID
do spe
?
Sposób, w jaki znalazłem obejmuje dwie zagnieżdżone pętle jest dość przystojny dla programisty proceduralnego takiego jak ja (jeśli zagnieżdżone pętle można nazwać przystojnym w ogóle). Jestem tak pewna, że dwuwarstwowy R będzie bardziej wydajny i szybszy, ale nie mogę tego rozgryźć. Naprawdę chcę więcej piękna w moim kodzie, to jest takie un-R.
+1 Witamy w StackOverflow. Chciałbym, aby wszystkie nowe pytania były tak jednoznaczne, z przykładowymi danymi, oczekiwanymi rezultatami i działającym kodem! – Andrie