[R-sig-eco] Subset by family name?
Peter Solymos
solymos at ualberta.ca
Sat Nov 29 17:38:30 CET 2008
Hi All,
maybe a more transparent solution for the zombie factor problem
(dropping unused factor levels) for data frames is (note, this applies
for all factors in the data frame x):
x[] <- lapply(x, function(x) x[drop = TRUE])
As I recall, on the help page of factor(), there is a slight warning
against character or numeric coercion of factors.
Cheers,
Peter
On Sat, Nov 29, 2008 at 9:25 AM, <byrnes at msi.ucsb.edu> wrote:
> This can still be a problem after subsetting with zombie factors hanging
> around. It's particularly annoying when your boxplotting from a subset,
> as you'll have a bunch of empty entries in the plot. I have a function I
> call purgef that deals with eliminating levels of a factor that I have
> subsetted out.
>
> purgef<-function(x){
> x<-as.character(x)
> x<-as.factor(x)
> return(x)
> }
>
> Gets rid of those pesky zombie levels.
>
> In your case
>
> Yut_are$Mark<-purgef(Yut_are$Mark)
>
>> Sorry to bother everyone---I realized I should have used "==" instead
>> of "=" in the subset syntax!
>>
>>
>> Quoting Ophelia Wang <opheliawang at mail.utexas.edu>:
>>
>>> Hi all,
>>>
>>> I thought this should be very simple, but I'm not sure where the
>>> problem is. I have a .txt data file that contains X and Y coordinates
>>> of trees and their family names:
>>>
>>> "X" "Y" "Mark"
>>> 0 28 "Sapotaceae"
>>> 1 30 "Meliaceae"
>>> 1 40 "Meliaceae"
>>> 1 60 "Mimosaceae"
>>> 1 76 "Olacaceae"
>>> 1.5 73 "Myristicaceae"
>>> 2 34 "Euphorbiaceae"
>>> 2 62 "Olacaceae"
>>> 2 86 "Mimosaceae"
>>> 2.5 36 "Arecaceae"
>>> 3 22 "Nyctaginaceae"
>>> 3 25 "Moraceae"
>>> 3 38 "Rubiaceae"
>>> 3 47 "Desconocido "
>>> 3 99 "Mimosaceae"
>>> 3.5 24 "Anacardiaceae"
>>> 3.5 57 "Sapotaceae"
>>> 4 1 "Lecythidaceae"
>>>
>>> Now I just want to work on one family for various spatial analyses in
>>> ads and spatstats, so I wrote:
>>>
>>> Yut <-read.delim(
>>> "C:/dissertation/data2006/Parcela_1-3/Yutsun_tree.txt", header = TRUE,
>>> sep = "\t", quote="\"", dec=".", fill = TRUE )
>>>
>>> Yut_are <- subset (Yut, Mark="Arecaceae", select=c(X, Y, Mark))
>>>
>>> However, the summary of Yut_are still contains trees of other families:
>>>
>>> X Y Mark
>>> Min. : 0.00 Min. : 0.00 Myristicaceae: 65
>>> 1st Qu.: 24.00 1st Qu.:24.00 Lecythidaceae: 60
>>> Median : 46.00 Median :51.00 Sapotaceae : 51
>>> Mean : 48.07 Mean :49.72 Moraceae : 45
>>> 3rd Qu.: 72.50 3rd Qu.:75.50 Arecaceae : 41
>>> Max. :100.00 Max. :99.00 Mimosaceae : 34
>>> (Other) :313
>>>
>>> Please tell me how do I subset a dataset like this to extract trees
>>> from only one or a few families? Thanks a lot!
>>>
>>> Ophelia
>>>
>>
>
> _______________________________________________
> R-sig-ecology mailing list
> R-sig-ecology at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-ecology
>
>
More information about the R-sig-ecology
mailing list