4

私は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

列 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

どんな助けでも大歓迎です。ありがとう!

データはこちら

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,]"))
4

2 に答える 2

8

aveをラップするカスタム関数で使用できるため、値maxを削除できます。NA

Data$Y <- ave(Data$Y, Data$X, FUN=function(x) max(x, na.rm=TRUE))
于 2012-08-21T20:53:52.940 に答える