Her bir erkek ve dişi ile birlikte, çiftlerinin rengine göre 40 çift kuşum var. Renk skoru, 1 ile 9 arasındaki bir değer aralığına sahip kategorik bir değişkendir. Her bir kombinasyonun (1/1, 1/2, 1/3, ... 9/7, 9) bulunduğu bir tablo oluşturmak istiyorum./8, 9/9). Sorunum, tabloyu oluşturmaya çalıştığımda verilerimde bulunmayan bazı kombinasyonların var olmasıdır (bu durumlarda eksik değerler için sıfırlar istiyorum). Veri ve örnek kod aşağıdadır. Cevabın 'expand.grid()' komutunu kullanarak yatar. Bu post bakın, ama nasıl uygulanacağından emin değilim. Baska öneri?R tablosundaki eksik değerler nasıl oluşturulur?
## Dataset pairs of males and females and their colour classes
Pair_Colours <- structure(list(Male = c(7, 6, 4, 6, 8, 8, 5, 6, 6, 8, 6, 6, 5,
7, 9, 5, 8, 7, 5, 5, 4, 6, 7, 7, 3, 6, 5, 4, 7, 4, 3, 9, 4, 4,
4, 4, 9, 6, 6, 6), Female = c(9, 8, 8, 9, 3, 6, 8, 5, 8, 9, 7,
3, 6, 5, 8, 9, 7, 3, 6, 4, 4, 4, 8, 8, 6, 7, 4, 2, 8, 9, 5, 6,
8, 8, 4, 4, 5, 9, 7, 8)), .Names = c("Male", "Female"), class = "data.frame", row.names = c(NA,
40L))
Pair_Colours$Male <- as.factor(Pair_Colours$Male)
Pair_Colours$Female <- as.factor(Pair_Colours$Female)
## table of pair colour values (colours 1 to 9 - categoricial variable)
table(Pair_Colours$Male, Pair_Colours$Female)
## my attempt to create a table with a count of each possible value for pairs
Colour_Male <- rep(seq(1, 9, by = 1), each = 9)
Colour_Female <- rep(seq(1, 9, by = 1), times = 9)
Colour_Count <- as.vector(table(Pair_Colours$Male, Pair_Colours$Female)) # <- the problem occurs here
Pairs_Colour_Table <- as.data.frame(cbind(cbind(Colour_Male, Colour_Female), Colour_Count))
## plot results to visisually look for possible assortative mating by colour
op<-par(mfrow=c(1,1), oma=c(2,4,0,0), mar=c(4,5,1,2), pty = "s")
plot(1,1, xlim = c(1, 9), ylim = c(1, 9), type="n", xaxt = "n", yaxt = "n", las=1, bty="n", cex.lab = 1.75, cex.axis = 1.5, main = NULL, xlab = "Male Colour", ylab = "Female Colour", pty = "s")
axis(1, at = seq(1, 9, by = 1), labels = T, cex.lab = 1.5, cex.axis = 1.5, tick = TRUE, tck = -0.015, lwd = 1.25, lwd.ticks = 1.25)
axis(2, at = seq(1, 9, by = 1), labels = T, cex.lab = 1.5, cex.axis = 1.5, tick = TRUE, tck = -0.015, lwd = 1.25, lwd.ticks = 1.25, las =2)
points(Pair_Colours$Male, Pair_Colours$Female, pch = 21, cex = Pairs_Colour_Table$Colour_Count, bg = "darkgray", col = "black", lwd = 1)
+1 Çok güzel çünkü basit. 'Expand.gird' hakkında düşünmüyordum. Kahveye ihtiyacım var. –