How to label list elements?

I have a list of lists. There are large number of elements in the list (I am showing here just a minimal example). I want to extract elements $d$ and $e$ from the data. So, I have to count at what position $d$ and $e$ are.

Is there any efficient way to do this without counting positions of elements manually? Can we label these elements and use those labels instead of using their positions?

a = RandomReal[{1, 100}, 10];
b = RandomReal[{1, 100}, 10];
c = RandomReal[{1, 100}, 10];
d = RandomReal[{1, 100}, 10];
e = RandomReal[{1, 100}, 10];
f = RandomReal[{1, 100}, 10];
data = Table[{a[[i]], b[[i]], c[[i]], d[[i]], e[[i]], f[[i]]}, {i, 1, 10}];
data1 = data[[All, {5, 6}]];

• Lookup Transpose. It allows a more compact treatment: data = Transpose @ { a, b, c, d, e, f }; is equivalent to your procedural Table statement.
– gwr
Apr 9, 2017 at 10:35
• It would be really nice, if you could maybe say why the answer given is not acceptable. Thank your very much for the effort. :)
– gwr
Apr 17, 2017 at 17:31

Make use of Association or Dataset:

data = Query[Transpose] @ AssociationThread[
CharacterRange["a", "f"] -> {a, b, c, d, e, f}
];

data // Dataset


Edit

In case you wonder: Using Transpose on the Association created by AssociationThread will not work directly. Nesting the Transpose in Query will make use of AssociationTranspose which is contained in the GeneralUtilities package:

Query[ Transpose ] // Normal


GeneralUtilities`AssociationTranspose