R数据。表格模式插补第一组记录

R数据。表格模式插补第一组记录,r,data.table,R,Data.table,p组为分类型 数据1:我希望按组和班级分别计算测试、分数和p的模式,然后仅计算时间=1的模式 data2:作为一个单独的步骤,我希望创建data2;data2获取data1,对于T>1时的任何缺失值,为变量测试和分数复制每组的上述值 希望达成data.table解决方案 我们可以使用 第二种情况是 library(data.table) nm1 <- c("Test", "Score", "P") setDT(data)[ , (nm1) := lapply(.SD, function(x

p组为分类型

数据1:我希望按组和班级分别计算测试、分数和p的模式,然后仅计算时间=1的模式

data2:作为一个单独的步骤,我希望创建data2;data2获取data1,对于T>1时的任何缺失值,为变量测试和分数复制每组的上述值


希望达成data.table解决方案

我们可以使用

第二种情况是

library(data.table)
nm1 <- c("Test", "Score", "P")
setDT(data)[ , (nm1) := lapply(.SD, function(x) 
    replace(x, is.na(x) & Time == 1, Mode(x))), by = .(Group), .SDcols = nm1]
图书馆(动物园)
nm2 1,(nm2):=lappy(.SD,na.locf0),.SDcols=nm2,by=Group]

我也更新了第二个案例。一开始,我不知道你所说的“抄写”是什么意思。我认为最好的做法是对重复使用的答案给予表扬:
Mode <- function(x) {
  ux <- unique(x)
   ux[which.max(tabulate(match(x, ux)))]
}
library(data.table)
nm1 <- c("Test", "Score", "P")
setDT(data)[ , (nm1) := lapply(.SD, function(x) 
    replace(x, is.na(x) & Time == 1, Mode(x))), by = .(Group), .SDcols = nm1]
library(zoo)
nm2 <- c("Test", "Score")
data[Time  > 1,  (nm2) := lapply(.SD, na.locf0), .SDcols = nm2, by = Group]