R - 在列中找到最高值并将其设置为其他值

时间:2018-06-15 08:09:33

标签: r dataframe max

我有一个庞大的数据框 - 超过1000列,20000行。

   id      a        b        c        d
1  42      3       NA       NA       NA
2  42     NA        6       NA       NA
3  42     NA       NA        7       NA

目标是为每列找到最高价值。如何知道这一点的唯一方法是通过mutate,但由于列数太多,所以不可能分别为每列写入。

结果应如下所示。请注意,对于某些列,最高值为NA。

   id      a        b        c        d
1  42      3        6        7       NA

2 个答案:

答案 0 :(得分:1)

假设您的日期被称为df,您可以使用base R来完成它:

df2 <- sapply(df1, function(x) max(x, na.rm = T))
df2
#id    a    b    c    d 
#42    3    6    7 -Inf 

is.na(df2) <- sapply(df2, is.infinite)
#id  a  b  c  d 
#42  3  6  7 NA 

答案 1 :(得分:0)

df <- read.table( text = "   id      a        b        c        d
1  42      3       NA       NA       NA
                  2  42     NA        6       NA       NA
                  3  42     NA       NA        7       NA", header = TRUE)

library(dplyr)
summarise_all(df, funs( max( ., na.rm = TRUE ) ) )

  id a b c    d
1 42 3 6 7 -Inf

如果需要,请将-inf更改为NA