使用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
实现上述的方法是什么?