r - Determine which values are absent from a given column thus have a 0 count -
i trying determine species have count of 0 (no value n) unique site.
for example, species5 through species33 not present in site1.d1. species2 through species33 not present in site1.d2, species1 through species4 & species6 through species33 not present in site1.d3, , forth.
there 33 total species (species1 species33), there 4 different sets of sites (site1 site4), ranging d1 d45 (for example, site1.d1 site1.d45 & site2.d1 site2.d35, etc.).
i want add missing species n of 0 existing data.table named testit.
# species site n # species1 site1.d1 17 # species2 site1.d1 1 # species3 site1.d1 4 # species4 site1.d1 1 # species1 site1.d2 14 # species5 site1.d3 1 # species6 site2.d2 1 # species6 site2.d4 12 # species7 site3.d3 9 # species6 site3.d5 1 testit <- structure(list(species = structure(c(1l, 2l, 3l, 4l, 1l, 5l, 6l, 6l, 7l, 6l), .label = c("species1", "species2", "species3", "species4", "species5", "species6", "species7"), class = "factor"), site = structure(c(1l, 1l, 1l, 1l, 2l, 3l, 4l, 5l, 6l, 7l ), .label = c("site1.d1", "site1.d2", "site1.d3", "site2.d2", "site2.d4", "site3.d3", "site3.d5"), class = "factor"), n = c(17l, 1l, 4l, 1l, 14l, 1l, 1l, 12l, 9l, 1l)), .names = c("species", "site", "n"), class = "data.frame", row.names = c(na, -10l)) species <- sprintf("species%d", 1:33) fullsites1 <- sprintf("site1.d%d", 1:45) fullsites2 <- sprintf("site2.d%d", 1:35) fullsites3 <- sprintf("site3.d%d", 1:40) fullsites4 <- sprintf("site4.d%d", 1:42) fullsites <- c(fullsites1, fullsites2, fullsites3, fullsites4)
this have tried far:
testit[, which(species %chin% testit$species) == false, = list(species, site)]
this not me i'm looking for.
what suggestions have?
thank you.
try out using tidyr
library(tidyr) xx <- testit %>% spread(site,n) %>% gather(sites,n,site1.d1:site3.d5) xx$n[is.na(xx$n)] <- 0
first step: spread give combinations
testit %>% spread(site,n) species site1.d1 site1.d2 site1.d3 site2.d2 site2.d4 site3.d3 site3.d5 1 species1 17 14 na na na na na 2 species2 1 na na na na na na 3 species3 4 na na na na na na 4 species4 1 na na na na na na 5 species5 na na 1 na na na na 6 species6 na na na 1 12 na 1 7 species7 na na na na na 9 na
second step: gather data in long form again, , replace na zeros.
species sites n 1 species1 site1.d1 17 2 species2 site1.d1 1 3 species3 site1.d1 4 4 species4 site1.d1 1 5 species5 site1.d1 0 6 species6 site1.d1 0 7 species7 site1.d1 0 8 species1 site1.d2 14 9 species2 site1.d2 0 10 species3 site1.d2 0 11 species4 site1.d2 0 12 species5 site1.d2 0 13 species6 site1.d2 0 14 species7 site1.d2 0 ........
Comments
Post a Comment