Data.table apprach:
сначала растопите вашу первую таблицу в длинном формате, а затем выполните левое объединение таблицы 2.
library( data.table )
melt( dt1, id.vars = "SpeciesID",
measure.vars = patterns( "^16Snem" ),
variable.name = "SampleID" )[ dt2, `:=`( OceanRegion = i.OceanRegion,
Habitat = i.Habitat,
Depth = i.Depth),
on = "SampleID"][]
# SpeciesID SampleID value OceanRegion Habitat Depth
# 1: K00368 16Snem1 452.0 GulfofMexico Seep 1000
# 2: K00376 16Snem1 469.5 GulfofMexico Seep 1000
# 3: K00387 16Snem1 401.5 GulfofMexico Seep 1000
# 4: K00368 16Snem2 0.0 GulfofMexico Shore 1425
# 5: K00376 16Snem2 15.0 GulfofMexico Shore 1425
# 6: K00387 16Snem2 10.0 GulfofMexico Shore 1425
# 7: K00368 16Snem3 470.0 SouthernCalifornia LopheliaSite 400
# 8: K00376 16Snem3 332.0 SouthernCalifornia LopheliaSite 400
# 9: K00387 16Snem3 302.0 SouthernCalifornia LopheliaSite 400
# 10: K00368 16Snem4 0.0 SouthernCalifornia LopheliaSite 495
# 11: K00376 16Snem4 0.0 SouthernCalifornia LopheliaSite 495
# 12: K00387 16Snem4 0.0 SouthernCalifornia LopheliaSite 495
Простое построение диаграмм не должно быть простым.
использованные образцы данных
library( data.table )
dt1 <- fread("SpeciesID 16Snem1 16Snem2 16Snem3 16Snem4
K00368 452.0 0.0 470.0 0.0
K00376 469.5 15.0 332.0 0.0
K00387 401.5 10.0 302.0 0.0")
dt2 <- fread("SampleID OceanRegion Habitat Depth
16Snem1 GulfofMexico Seep 1000
16Snem2 GulfofMexico Shore 1425
16Snem3 SouthernCalifornia LopheliaSite 400
16Snem4 SouthernCalifornia LopheliaSite 495")