Perhaps indexing with rowSums(is.na(dfrm))?

— 
David

Sent from my iPhone

> On Jun 4, 2020, at 4:58 PM, Ted Stankowich <theodore.stankow...@csulb.edu> 
> wrote:
> 
> This worked! Thank you!
> 
> -----Original Message-----
> From: Rui Barradas [mailto:ruipbarra...@sapo.pt] 
> Sent: Thursday, June 4, 2020 2:49 PM
> To: Ted Stankowich <theodore.stankow...@csulb.edu>; William Dunlap 
> <wdun...@tibco.com>
> Cc: r-help@r-project.org
> Subject: Re: [R] na.omit not omitting rows
> 
> CAUTION: This email was sent from an external source. Use caution when 
> replying, opening links or attachments.
> 
> 
> Hello,
> 
> If the problem is the "na.action" attribute, here are two ways of solving it.
> 
> First, an example data set.
> 
> set.seed(2020)    # Make the example reproducible
> phamComplBinomial <- sprintf("f%003d", 1:356)
> is.na(UphamComplBinomial) <- sample(356, 37) DarkEum <- factor(sample(1:2, 
> 356, TRUE))
> Protect1 <- data.frame(UphamComplBinomial = factor(UphamComplBinomial),
> DarkEum)
> 
> 
> 1. Setting the attribute "na.action" to NULL removes it
> 
> Protect2 <- na.omit(Protect1)
> attributes(Protect2)
> attr(Protect2, "na.action") <- NULL
> attributes(Protect2)
> 
> 
> 2. Use an index vector to subset the data
> 
> na <- is.na(Protect1$UphamComplBinomial)
> Protect3 <- Protect1[!na, ]
> 
> 
> The results are identical. But if you have more than one column with NA's, 
> this second way will be more complicated.
> 
> identical(Protect2, Protect3)
> #[1] TRUE
> 
> 
> Hope this helps,
> 
> Rui Barradas
> 
> Às 22:27 de 04/06/20, Ted Stankowich escreveu:
>> Thanks, but no that doesn’t work. The na.omit attributes are still in 
>> the dataframe, which you can see in the str outputs from the post. The 
>> problem line is likely:  - attr(*, "na.action")= 'omit' Named int 
>> [1:2] 2 3
>> 
>> From: William Dunlap [mailto:wdun...@tibco.com]
>> Sent: Thursday, June 4, 2020 12:39 PM
>> To: Ted Stankowich <theodore.stankow...@csulb.edu>
>> Cc: r-help@r-project.org
>> Subject: Re: [R] na.omit not omitting rows
>> 
>> CAUTION: This email was sent from an external source. Use caution when 
>> replying, opening links or attachments.
>> 
>> Does droplevels() help?
>> 
>>> d <- data.frame(size = factor(c("S","M","M","L","L"), 
>>> levels=c("S","M","L")), id=c(101,NA,NA,104,105))
>>> str(d)
>> 'data.frame':   5 obs. of  2 variables:
>>  $ size: Factor w/ 3 levels "S","M","L": 1 2 2 3 3
>>  $ id  : num  101 NA NA 104 105
>>> str(na.omit(d))
>> 'data.frame':   3 obs. of  2 variables:
>>  $ size: Factor w/ 3 levels "S","M","L": 1 3 3
>>  $ id  : num  101 104 105
>>  - attr(*, "na.action")= 'omit' Named int [1:2] 2 3
>>   ..- attr(*, "names")= chr [1:2] "2" "3"
>>> str(droplevels(na.omit(d)))
>> 'data.frame':   3 obs. of  2 variables:
>>  $ size: Factor w/ 2 levels "S","L": 1 2 2
>>  $ id  : num  101 104 105
>>  - attr(*, "na.action")= 'omit' Named int [1:2] 2 3
>>   ..- attr(*, "names")= chr [1:2] "2" "3"
>> 
>> Bill Dunlap
>> TIBCO Software
>> wdunlap tibco.com<http://tibco.com>
>> 
>> 
>> On Thu, Jun 4, 2020 at 12:18 PM Ted Stankowich 
>> <theodore.stankow...@csulb.edu<mailto:theodore.stankow...@csulb.edu>> wrote:
>> Hello! I'm trying to create a subset of a dataset and then remove all rows 
>> with NAs in them. Ultimately, I am running phylogenetic analyses with trees 
>> that require the tree tiplabels to match exactly with the rows in the 
>> dataframe. But when I use na.omit to delete the rows with NAs, there is 
>> still a trace of those omitted rows in the data.frame, which then causes an 
>> error in the phylogenetic analyses. Is there any way to completely scrub 
>> those omitted rows from the dataframe? The code is below. As you can see 
>> from the result of the final str(Protect1) line, there are attributes with 
>> the omitted features still in the dataframe (356 species names in the 
>> UphamComplBinomial factor, but only 319 observations). These traces are 
>> causing errors with the phylo analyses.
>> 
>>> Protect1=as.data.frame(cbind(UphamComplBinomial, DarkEum, NoctCrep, 
>>> Shade))  #Create the dataframe with variables of interest from an 
>>> attached dataset row.names(Protect1)=Protect1$UphamComplBinomial 
>>> #assign species names as rownames
>>> Protect1=as.data.frame(na.omit(Protect1)) #drop rows with missing 
>>> data
>>> str(Protect1)
>> 'data.frame': 319 obs. of  4 variables:
>>  $ UphamComplBinomial: Factor w/ 356 levels 
>> "Allenopithecus_nigroviridis_CERCOPITHECIDAE_PRIMATES",..: 1 2 3 4 5 8 9 10 
>> 11 12 ...
>>  $ DarkEum           : Factor w/ 2 levels "0","1": 2 1 2 2 2 2 2 2 2 2 ...
>>  $ NoctCrep          : Factor w/ 2 levels "0","1": 1 2 1 1 1 1 1 1 1 1 ...
>>  $ Shade             : Factor w/ 59 levels "0.1","0.2","0.25",..: 10 58 53 
>> 17 49 52 52 39 39 41 ...
>>  - attr(*, "na.action")= 'omit' Named int  6 7 23 36 37 40 42 50 51 60 ...
>>   ..- attr(*, "names")= chr  "Alouatta_macconnelli_ATELIDAE_PRIMATES" 
>> "Alouatta_nigerrima_ATELIDAE_PRIMATES" "Ateles_fusciceps_ATELIDAE_PRIMATES" 
>> "Callicebus_baptista_PITHECIIDAE_PRIMATES" ...
>> 
>> Dr. Ted Stankowich
>> Associate Professor
>> Department of Biological Sciences
>> California State University Long Beach Long Beach, CA 90840 
>> theodore.stankow...@csulb.edu<mailto:theodore.stankow...@csulb.edu><ma
>> ilto:theodore.stankow...@csulb.edu<mailto:theodore.stankow...@csulb.ed
>> u>>
>> 562-985-4826
>> http://www.csulb.edu/mammal-lab/
>> @CSULBMammalLab
>> 
>> 
>> 
>> 
>>         [[alternative HTML version deleted]]
>> 
>> ______________________________________________
>> R-help@r-project.org<mailto:R-help@r-project.org> mailing list -- To 
>> UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide 
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>> 
>>      [[alternative HTML version deleted]]
>> 
>> ______________________________________________
>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide 
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>> 
> ______________________________________________
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to