I を使用data.table
すると、次のことができます。
library(data.table)
dt = data.table(a = 1:2, b = c(1,2,NA,NA))
# a b
#1: 1 1
#2: 2 2
#3: 1 NA
#4: 2 NA
dt[, b := b[1], by = a]
# a b
#1: 1 1
#2: 2 2
#3: 1 1
#4: 2 2
ただし、同じ操作を試みるとdplyr
、データは次のようにスクランブル/ソートされa
ます:
library(dplyr)
dt = data.table(a = 1:2, b = c(1,2,NA,NA))
dt %.% group_by(a) %.% mutate(b = b[1])
# a b
#1 1 1
#2 1 1
#3 2 2
#4 2 2
(余談ですが、上記は元の もソートしますが、その場で変更しないという の哲学をdt
考えると、私にとってはやや混乱します-それは とのインターフェースdplyr
方法のバグだと思います)dplyr
data.table
dplyr
上記を達成する方法は何ですか?