[R] Replace NaN with value from the same row
Jeff Newmiller
jdnewmil at dcn.davis.CA.us
Sun Oct 18 21:55:14 CEST 2015
You should (re-)read the intro document that comes with R, "An Introduction to R". Pay particular attention to sections 2., 2.7, and 5.2.
The "idx" variable that I defined is a vector in the current environment (in your case apparently a local function environment). It is not a column in your data frame. You should look at it using the str function. (You might need to print the result of str, or use the debug capability of R to single-step through your function and then use str. Read the help at ?debug.)
The df[ idx, "offset" ] notation uses the logical indexing and string indexing concepts in section 2.7 to select a subset of the rows and one column of the data frame.
---------------------------------------------------------------------------
Jeff Newmiller The ..... ..... Go Live...
DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go...
Live: OO#.. Dead: OO#.. Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#. rocks...1k
---------------------------------------------------------------------------
Sent from my phone. Please excuse my brevity.
On October 18, 2015 12:24:42 PM PDT, Jonathan Reardon <jonathanreardon at outlook.com> wrote:
>Hi, Sorry to be a pain. Would you be kind enough to briefly explain
>what the lines are doing?
>From what i can gather, 'idx <- is.na( df$mean )' is making a new
>column called 'idx', finds the NaN values and inserts the boolean TRUE
>in the respective cell.
>df[ idx, "mean" ] <- df[ idx, "offset" ] << i am unsure what this
>is doing exactly.
>Jon
>
>
>> Subject: RE: [R] Replace NaN with value from the same row
>> From: jdnewmil at dcn.davis.CA.us
>> Date: Sun, 18 Oct 2015 12:09:02 -0700
>> To: jonathanreardon at outlook.com
>>
>> The Posting Guide mentioned at the bottom of every email in the list
>tells you that such an option is in your email software, which I know
>nothing about. Most software lets you choose the format as part of
>composing each email, but some software will let you set a default
>format to use for each email address (so all your emails to e.g.
>r-help at r-project.org will be plain text).
>>
>---------------------------------------------------------------------------
>> Jeff Newmiller The ..... ..... Go
>Live...
>> DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live
>Go...
>> Live: OO#.. Dead: OO#..
>Playing
>> Research Engineer (Solar/Batteries O.O#. #.O#. with
>> /Software/Embedded Controllers) .OO#. .OO#.
>rocks...1k
>>
>---------------------------------------------------------------------------
>
>> Sent from my phone. Please excuse my brevity.
>>
>> On October 18, 2015 11:29:51 AM PDT, Jonathan Reardon
><jonathanreardon at outlook.com> wrote:
>> >How do i send an email in plain text format and not HTML?
>> >I tried:
>> >idx <- is.na( df$mean )
>> >df[ idx, "mean" ] <- df[ idx, "offset" ]
>> >I got the error message:
>> >In is.na(df$mean) : is.na() applied to non-(list or vector) of type
>> >'NULL'
>> >Jon
>> >
>> >> Subject: Re: [R] Replace NaN with value from the same row
>> >> From: jdnewmil at dcn.davis.CA.us
>> >> Date: Sun, 18 Oct 2015 11:06:44 -0700
>> >> To: jonathanreardon at outlook.com; r-help at r-project.org
>> >>
>> >> Next time send your email using plain text format rather than HTML
>so
>> >we see what you saw.
>> >>
>> >> Try
>> >>
>> >> idx <- is.na( df$mean )
>> >> df[ idx, "mean" ] <- df[ idx, "offset" ]
>> >>
>> >> BTW there is a commonly-used function called df, so you might
>improve
>> >clarity by using DF for your temporary data frame name.
>> >>
>>
>>---------------------------------------------------------------------------
>> >> Jeff Newmiller The ..... .....
>Go
>> >Live...
>> >> DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#.
>Live
>> >Go...
>> >> Live: OO#.. Dead: OO#..
>> >Playing
>> >> Research Engineer (Solar/Batteries O.O#. #.O#.
>with
>> >> /Software/Embedded Controllers) .OO#. .OO#.
>> >rocks...1k
>> >>
>>
>>---------------------------------------------------------------------------
>> >
>> >> Sent from my phone. Please excuse my brevity.
>> >>
>> >> On October 18, 2015 10:48:14 AM PDT, Jonathan Reardon
>> ><jonathanreardon at outlook.com> wrote:
>> >> >Hi everyone,
>> >> >A simple question, but i cannot figure this out.
>> >> >
>> >> >I have a data-frame with 4 columns (onset, offset, outcome,
>mean):
>> >> >onset offset outcome mean8 72071 72503 1 7244615
>142598
>> >> >143030 1 NaN30 293729 294161 1 294080
>> >> >For each 'NaN' in the mean column, i want to replace that NaN
>with
>> >the
>> >> >'offset' value in the same row.
>> >> >Intended outcome:
>> >> >onset offset outcome mean8 72071 72503 1 7244615
>142598
>> >> >143030 1 14303030 293729 294161 1 294080
>> >> >I have tried:
>> >> > df$mean <- replace(df$mean, is.na(df$mean), df$offset)
>> >> >but i get the error message: 'number of items to replace is not a
>> >> >multiple of replacement length'. I'm assuming because this is
>trying
>> >to
>> >> >insert the whole 'offset' column into my one NaN cell. Is this a
>> >> >correct interpretation of the error message?
>> >> >Can anyone tell me how to replace any mean row NaN's with the
>> >offset
>> >> >value from that very same row?
>> >> >I don't want to use any pasting etc as this needs to be used as
>part
>> >of
>> >> >a function working over a large dataset than the one shown here.
>> >> >Cheers
>> >> >Jonathan
>> >> > [[alternative HTML version deleted]]
>> >> >
>> >> >______________________________________________
>> >> >R-help at 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.
>> >>
>> >
>>
>
More information about the R-help
mailing list