Getting the minimum of the rows in a data frame

前端 未结 3 1019
一个人的身影
一个人的身影 2020-12-11 03:25

I am working with a dataframe that has 65 variables in it. The first variable catalogs a person, and the next 64 variables indicate the geographic distance that person is fr

相关标签:
3条回答
  • 2020-12-11 04:18
    df <- data.frame(let=letters[1:25], d1=sample(1:25,25), d2=sample(1:25,25), d3=sample(1:25,25))
    
    df$shortest <- apply(df[,2:4],1,min)
    

    The second line applies the function min to each row and assigns it to the new column in my data.frame df. See ?apply for more explanation of what the second line is doing. Careful to skip the first column, or any columns that aren't distances:

    apply(df,1,min) gives completely difference answers since its finding the "min" of strings.

    > min(2:10)
    [1] 2
    > min(as.character(2:10))
    [1] "10"
    
    0 讨论(0)
  • 2020-12-11 04:19

    I'd approach this with apply but transform or other approach could work.

    #fake data set
    ID=LETTERS[1:5], distance=matrixsample(
    DF <- as.data.frame(matrix(sample(1:100, rep=T, 100), 5, 20))
    DF <- data.frame(ID=LETTERS[1:5], DF)
    
    #solution
    DF$newvar <- apply(DF[,-1], 1, min)
    
    0 讨论(0)
  • 2020-12-11 04:20

    Or, using the example of Justin:

    df$shortest <- do.call(pmin,df[-1])
    

    see also ?pmin and ?do.call, and note that you can drop the first variable in your data frame by using the list indices (so not using any comma at all, see also ?Extract )

    0 讨论(0)
提交回复
热议问题