我有下一个矩阵:
structure(list(`1` = c(0, 0, NA, NA, NA, NA, 0, 0, NA, NA, NA,
1, NA, NA, NA), `2` = c(1, 0, NA, NA, NA, NA, NA, 0, NA, NA,
NA, 1, NA, NA, NA), `4` = c(NA, NA, 0, 1, 1, 0, NA, NA, 0, 1,
1, NA, 1, 0, 0), `5` = c(NA, NA, 0, 1, 1, 0, NA, NA, 1, 1, NA,
NA, 1, 0, 1), `6` = c(NA, NA, 0, 1, 1, 0, NA, NA, 1, 0, NA, NA,
1, 0, NA), `7` = c(NA, NA, NA, 1, 1, 0, NA, NA, 0, 1, NA, NA,
1, 0, NA), `8` = c(NA, NA, NA, 1, 0, 0, NA, NA, 1, 0, NA, NA,
1, 0, NA)), row.names = c(NA, 15L), class = "data.frame")
我想创建以下矩阵的基础上,在以前的矩阵,我已经创建了下一个代码,但它不工作。
for(i in 1:nrow(mat)){
for(j in 1:7){
if(mat[i,j]==0){
next }else{
if(mat[i,j]==1){
mat[i,j:7]<-1
}else{
if(is.na(mat[i,j])){
mat[i,j]<-NA
}}}
}
}
例如,对于每一行:
0,0,0,1,0,0,0
- 如果在该行中存在1,则在该1之后的所有元素应当等于1。
- 如果存在NA,则此值应等于NA
这个想法是建立一个矩阵来描述一段时间内的干预。我的意思是1是干预被应用的时间。
- 如果我有这样的东西:0,NA,NA,1,0,NA,1我想得到例如:0、不可用、不可用、1、1、不可用、1
我希望你能帮我。
2条答案
按热度按时间b4lqfgs41#
使用
cummax
+apply
:输出功率
cfh9epnr2#
使用
cummax
的向量化函数: