Hello, again.

Inline.

Em 15-07-2012 16:17, Charles Stangor escreveu:
Rui,

Since you are so generous, may I ask you one more question?  What is the
deal with the text after the semicolon in the statement below? Is this
an ifelse or something?  Why is it needed ?

obrigado.

df1 <- read.table(text="
cola colb colc cold cole
1    NA    5    9   NA   17
2    2    6   NA   14   NA
3    3    NA   11   15   19
4    4    8   12   NA   NA
", header=TRUE)

df2 <- read.table(text="
cola colb colc cold cole
1  8 10 12 14 16
", header=TRUE)

df1[["cola"]][is.na(df1[["cola"]])] <- df2[["cola"]];
df1[["cola"]]  #?? what's happening after the semi?

It's printing df1[["cola"]]. Just that. The sem-colon ends an instruction and starts a new one.
If it's confusing, put what follows it in a new line.

Rui Barradas

df1



On Sat, Jul 14, 2012 at 7:41 PM, Rui Barradas <ruipbarra...@sapo.pt
<mailto:ruipbarra...@sapo.pt>> wrote:

    Hello,

    It's more simple than you believe it is. One thing at a time.

    First, in order to lighten the instructions, create index vectors.

    test2 <- test  # save 'test' for later

    na.v1 <- is.na <http://is.na>(test[["v1"]])
    na.v2 <- is.na <http://is.na>(test[["v2"]])
    na.v3 <- is.na <http://is.na>(test[["v3"]])


    Now use them.


    test[[ "result" ]][ !na.v1 ] <- test[[ "v1" ]][ !na.v1 ]
    test[[ "result" ]][ !na.v2 ] <- test[[ "v2" ]][ !na.v2 ]
    test[[ "result" ]][ !na.v3 ] <- test[[ "v3" ]][ !na.v3 ]


    Note that above, for instance, n the first line, on each side of
    '<-' we have two different types of indexing, in a certain sense.

    One, a data.frame is a list of a special type, each list member is a
    (random?) variable and all variables have the same number of
    observations. So test[[ "result" ]] refers to a vector of the
    data.frame.

    Another is the indexing of that vectors' elements. Imagine that we
    had assigned

    test.res <- test[[ "result" ]]

    and then accessed the elements of 'test.res' with

    test.res[ !na.v1 ] <- ...etc...

    That's what we are doing.
    Considering that a df is a list with a tabular form, we could also
    use the row/column type of indexing. Maybe this would be more
    intuitive. Equivalent, exactly equivalent to the code above is:


    test2[  !na.v1 , "result" ] <- test2[ !na.v1 , "v1" ]
    test2[  !na.v2 , "result" ] <- test2[ !na.v2 , "v2" ]
    test2[  !na.v3 , "result" ] <- test2[ !na.v3 , "v3" ]

    all.equal(test, test2) # TRUE


    Hope this helps,

    Rui Barradas

    Em 14-07-2012 21:22, Charles Stangor escreveu:

        OK, I need help!!

        I've been searching, but I don't understand the logic of some this
        dataframe addressing syntax.

        What is this type of code called?

        test [["v3"]] [is.na <http://is.na>
        <http://is.na>(test[["v2"]])] <-10  #choose column
        v3 where column v2 is == 4 and replace with 10

        and where is it documented?


        The code below works for what I want to do (find the non-missing
        value
        in a row), but why?

        test <- read.table(text="
        v1  v2  v3  result
        3  NA  NA  NA
        NA  3   NA NA
        NA  NA   3 NA
        "
        , header=TRUE)

        test [["result"]] [!(is.na <http://is.na>
        <http://is.na>(test[["v1"]]))] <- test
        [["v1"]] [!(is.na <http://is.na> <http://is.na>(test[["v1"]]))]
        test [["result"]] [!(is.na <http://is.na>
        <http://is.na>(test[["v2"]]))] <- test
        [["v2"]] [!(is.na <http://is.na> <http://is.na>(test[["v2"]]))]
        test [["result"]] [!(is.na <http://is.na>
        <http://is.na>(test[["v3"]]))] <- test
        [["v3"]] [!(is.na <http://is.na> <http://is.na>(test[["v3"]]))]

        thanks!


        On Fri, Jul 13, 2012 at 6:41 AM, Rui Barradas
        <ruipbarra...@sapo.pt <mailto:ruipbarra...@sapo.pt>
        <mailto:ruipbarra...@sapo.pt <mailto:ruipbarra...@sapo.pt>>> wrote:

             Hello,

             Check the structure of what you have, df and newdf. You
        will see
             that in df dateTime is of class POSIXlt and in newDf
        newDateTime is
             of class POSIXct.

             Solution:

             [...]
             df$dateTime <- strptime(df$dateTime,"%m/%d/%Y %H:%M")
             df$dateTime <- as.POSIXct(df$dateTime)
             [...]

             Hope this helps,

             Rui Barradas

             Em 13-07-2012 10:24, vioravis escreveu:

                 I have the following dataframe with the first column
        being of
                 type datetime:

                 dateTime <- c("10/01/2005 0:00",
                                 "10/01/2005 0:20",
                                 "10/01/2005 0:40",
                                 "10/01/2005 1:00",
                                 "10/01/2005 1:20")
                 var1 <- c(1,2,3,4,5)
                 var2 <- c(10,20,30,40,50)
                 df <- data.frame(dateTime = dateTime, var1 = var1, var2
        = var2)
                 df$dateTime <- strptime(df$dateTime,"%m/%d/%Y %H:%M")

                 I want to create 10 minute interval data as follows:

                 minTime <- min(df$dateTime)
                 maxTime <- max(df$dateTime)
                 newTime <- seq(minTime,maxTime,600)
                 newDf <- data.frame(newDateTime = newTime)
                 newDf <- merge(newDf,df,by.x = "newDateTime",by.y =
                 "dateTime",all.x = TRUE)

                 The objective here is to create a data frame with
        values from df
                 for the
                 datetime in df and NA for the missing ones. However, I am
                 getting the
                 following data frame with both Var1 and Var2 having all
        NAs.

                     newDf

                             newDateTime var1 var2
                 1 2005-10-01 00:00:00   NA   NA
                 2 2005-10-01 00:10:00   NA   NA
                 3 2005-10-01 00:20:00   NA   NA
                 4 2005-10-01 00:30:00   NA   NA
                 5 2005-10-01 00:40:00   NA   NA
                 6 2005-10-01 00:50:00   NA   NA
                 7 2005-10-01 01:00:00   NA   NA
                 8 2005-10-01 01:10:00   NA   NA
                 9 2005-10-01 01:20:00   NA   NA

                 Can someone help me on how to do the merge based on the
        two datetime
                 columns?

                 Thank you.

                 Ravi






                 --
                 View this message in context:
        
http://r.789695.n4.nabble.com/____Merging-on-Datetime-Column-____tp4636417.html
        
<http://r.789695.n4.nabble.com/__Merging-on-Datetime-Column-__tp4636417.html>

        
<http://r.789695.n4.nabble.__com/Merging-on-Datetime-__Column-tp4636417.html
        
<http://r.789695.n4.nabble.com/Merging-on-Datetime-Column-tp4636417.html>>
                 Sent from the R help mailing list archive at Nabble.com.

                 __________________________________________________
        R-help@r-project.org <mailto:R-help@r-project.org>
        <mailto:R-help@r-project.org <mailto:R-help@r-project.org>>
        mailing list
        https://stat.ethz.ch/mailman/____listinfo/r-help
        <https://stat.ethz.ch/mailman/__listinfo/r-help>
                 <https://stat.ethz.ch/mailman/__listinfo/r-help
        <https://stat.ethz.ch/mailman/listinfo/r-help>>
                 PLEASE do read the posting guide
        http://www.R-project.org/____posting-guide.html
        <http://www.R-project.org/__posting-guide.html>
                 <http://www.R-project.org/__posting-guide.html
        <http://www.R-project.org/posting-guide.html>>
                 and provide commented, minimal, self-contained,
        reproducible code.


             __________________________________________________
        R-help@r-project.org <mailto:R-help@r-project.org>
        <mailto:R-help@r-project.org <mailto:R-help@r-project.org>>
        mailing list
        https://stat.ethz.ch/mailman/____listinfo/r-help
        <https://stat.ethz.ch/mailman/__listinfo/r-help>
             <https://stat.ethz.ch/mailman/__listinfo/r-help
        <https://stat.ethz.ch/mailman/listinfo/r-help>>
             PLEASE do read the posting guide
        http://www.R-project.org/____posting-guide.html
        <http://www.R-project.org/__posting-guide.html>
             <http://www.R-project.org/__posting-guide.html
        <http://www.R-project.org/posting-guide.html>>
             and provide commented, minimal, self-contained,
        reproducible code.




        --
        Charles Stangor
        Professor and Associate Chair






--
Charles Stangor
Professor and Associate Chair


______________________________________________
R-help@r-project.org mailing list
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