选择R中的最大列值

Mat*_*att 4 r

我对R很新,并且对于选择列中的最大值有疑问.

我有以下数据框:

          X      Y
 [1,]     1     10
 [2,]     1     12
 [3,]     1     NA
 [4,]     2     5
 [5,]     2     6
 [6,]     2     7
 [7,]     2     8
 [8,]     3     NA
 [9,]     3     NA
[10,]     3     1
Run Code Online (Sandbox Code Playgroud)

我想选择Y列的最大值,并用该值替换每个组中的Y的所有值.我的输出数据框看起来像这样:

          X      Y
 [1,]     1     12
 [2,]     1     12
 [3,]     1     12
 [4,]     2     8
 [5,]     2     8
 [6,]     2     8
 [7,]     2     8
 [8,]     3     1
 [9,]     3     1
[10,]     3     1
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.谢谢!

这是数据

Data <- structure(list(X = c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L), 
                     Y = c(10L, 12L, NA, 5L, 6L, 7L, 8L, NA, NA, 1L)), 
                .Names = c("X", "Y"), class = "data.frame",
                row.names = c("[1,]", "[2,]", "[3,]", "[4,]", "[5,]", "[6,]", "[7,]", "[8,]", "[9,]", "[10,]"))
Run Code Online (Sandbox Code Playgroud)

Jos*_*ich 8

您可以使用ave包装的自定义函数max,因此您可以删除NA值:

Data$Y <- ave(Data$Y, Data$X, FUN=function(x) max(x, na.rm=TRUE))
Run Code Online (Sandbox Code Playgroud)