我是一个 R 新手,正在为看似简单的逻辑编写代码而苦苦挣扎,并且希望得到任何帮助!我试图为数据集每行中的 NA 单元格推定常量值 1,但仅限于具有 2 个或更少 NA 单元格的行。最终,我还将在插补后用行方式计算一个新列。如果一行代码自动实现所有这些事情,那就太棒了!
这是一个可供使用的示例数据集。
tData <- data.frame(subID=c(1001,1002,1003,1004),
b1=c(1,1,2,NA),
b2=c(NA,1,1,NA),
b3=c(NA,2,2,NA),
b4=c(2,NA,1,NA))
我一直在查看各种基础和 dplyr 代码示例,但我正在乘坐挣扎巴士。
最佳答案
您可以在这两行中执行此操作。
tData[is.na(tData) & rowSums(is.na(tData)) <= 2] <- 1
tData |> cbind(row_means=rowMeans(tData[-1]))
# subID b1 b2 b3 b4 row_means
# 1 1001 1 1 1 2 1.25
# 2 1002 1 1 2 1 1.25
# 3 1003 2 1 2 1 1.50
# 4 1004 NA NA NA NA NA
数据:
tData <- structure(list(subID = c(1001, 1002, 1003, 1004), b1 = c(1, 1,
2, NA), b2 = c(NA, 1, 1, NA), b3 = c(NA, 2, 2, NA), b4 = c(2,
NA, 1, NA)), class = "data.frame", row.names = c(NA, -4L))
关于r - 如何插补常量的条件行插补,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76748553/