[R] Making a group membership matrix

Andy Bunn abunn at montana.edu
Tue Jul 22 17:41:56 CEST 2003


Hi Helpers:

I have a factor object that has 314k entries of 39 land cover types.
(This object can be coerced to characters neatly should that be easier
to work with.) 
> length(foo)
[1] 314482
> foo[1:10]
 [1] Montane Chaparral Barren            Red Fir           Red Fir

 [5] Red Fir           Red Fir           Red Fir           Red Fir

 [9] Red Fir           Red Fir          
39 Levels: Alpine-Dwarf Shrub Annual Grassland Aspen Barren ... White
Fir
> summary(foo)
         Alpine-Dwarf Shrub            Annual Grassland
Aspen 
                       7402                           0
582 
                     Barren                 Bitterbrush      Blue
Oak-Foothill Pine 
                      69111                           9
0 
          Blue Oak Woodland  Chamise-Redshank Chaparral    Closed-Cone
Pine-Cypress 
                          0                           0
0 
                   Cropland                Desert Scrub
Douglas-Fir 
                          0                           0
0 
              Eastside Pine Freshwater Emergent Wetland
Jeffrey Pine 
                          0                           0
11342 
                Joshua Tree                     Juniper
Lacustrine 
                          0                        1293
501 
             Lodgepole Pine                    Low Sage
Mixed Chaparral 
                      60332                          31
1043 
          Montane Chaparral            Montane Hardwood    Montane
Hardwood-Conifer 
                       6648                         326
0 
           Montane Riparian        Orchard and Vineyard
Perennial Grassland 
                        180                           0
17 
             Pinyon-Juniper              Ponderosa Pine
Red Fir 
                        968                         708
66263 
                   Riverine                   Sagebrush       Sierran
Mixed Conifer 
                          0                        2292
14264 
          Subalpine Conifer                       Urban
Valley-Foothill Riparian 
                      66237                           0
0 
        Valley Oak Woodland                  Wet Meadow
White Fir 
                          0                        2216
2717 
>


I want to make a matrix that has the cover types as columns and
length(foo) rows. I want the matrix entities to be scored one if that
cover type else zero.

foo.mat <- matrix(data = 0, nrow = length(foo), 
                  ncol = nlevels(foo))

colnames(foo.mat) <- levels(foo)

That is easy enough but I'm at a loss as how to populate it properly.

In case I'm not being clear. This is what I want:

> foo[1]
[1] Montane Chaparral
39 Levels: Alpine-Dwarf Shrub Annual Grassland Aspen Barren ... White
Fir
> foo.mat[1,]
         Alpine-Dwarf Shrub            Annual Grassland
Aspen 
                         0                          0
0 
                     Barren                 Bitterbrush      Blue
Oak-Foothill Pine 
                         0                          0
0 
          Blue Oak Woodland  Chamise-Redshank Chaparral    Closed-Cone
Pine-Cypress 
                         0                          0
0 
                   Cropland                Desert Scrub
Douglas-Fir 
                         0                          0
0 
              Eastside Pine Freshwater Emergent Wetland
Jeffrey Pine 
                         0                          0
0 
                Joshua Tree                     Juniper
Lacustrine 
                         0                          0
0 
             Lodgepole Pine                    Low Sage
Mixed Chaparral 
                         0                          0
0 
          Montane Chaparral            Montane Hardwood    Montane
Hardwood-Conifer 
                         1                          0
0 
           Montane Riparian        Orchard and Vineyard
Perennial Grassland 
                         0                          0
0 
             Pinyon-Juniper              Ponderosa Pine
Red Fir 
                         0                          0
0 
                   Riverine                   Sagebrush       Sierran
Mixed Conifer 
                         0                          0
0 
          Subalpine Conifer                       Urban
Valley-Foothill Riparian 
                         0                          0
0 
        Valley Oak Woodland                  Wet Meadow
White Fir 
                         0                          0
0 
>


I'm sure that somebody will send me a cryptic oneliner but I have no
idea how to do this.

Thanks in advance, Andy




More information about the R-help mailing list