我有一些 R 数据帧,其中包含二进制数据(0,1)
,以表示对特定子量表项目的不正确和正确响应。参与者没有被问到所有问题,并且必须NA
指出这些缺失的数据。年长的参与者从较晚的项目开始,并且NA
没有询问早期项目。此外,大多数参与者没有完成评估,导致NA
行尾出现许多 s。示例行如下:
Row 1 = NA, NA, NA, 1, 1, 0 , 1, 0, 0, 0, NA, NA
Row 2 = 1, 1, 0, 0, 0, NA, NA, NA, NA, NA, NA, NA, NA
我想将NA
行开头的所有 s (如果它们存在)替换为,并将行末尾的 s 替换1
为。NA
0
所以上面将是
Row 1 = 1,1, 1, 1, 1, 0 , 1, 0, 0, 0, 0,0
Row 2 = 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0
我尝试使用以下功能:
datComp <- function (x){
xmin <- min(which(!is.na(x)))
xmax <- max(which(!is.na(x)))
if (xmin >1){
x[1:xmin-1] <- 1}
x[(xmax+1):length(x)] <- 0
return(x)
}
但是对于某些数据帧会出现此错误:
Error in data.frame(`1` = c(1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, :
arguments imply differing number of rows: 36, 37
是否有一个现有的功能可以满足我的需求?如果没有,任何人都可以用简单的代码来帮助我吗?