РЕДАКТИРОВАТЬ: решение Base R
df <- as.data.frame(dt)
tdf <- data.frame(t(df))
tdf$X1[cumsum(tdf$X1)>5] <- 0
tdf$X2[cumsum(tdf$X2)>5] <- 0
tdf$X3[cumsum(tdf$X3)>5] <- 0
tdf$X4[cumsum(tdf$X4)>5] <- 0
tdf$X5[cumsum(tdf$X5)>5] <- 0
t(tdf)
#> V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16
#> X1 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0
#> X2 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0
#> X3 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0
#> X4 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0
#> X5 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0
Вы можете t()
сначала ваш фрейм данных.
И использовать функцию cumsum
и t
результат назад
library(data.table)
dt <- fread('0 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0
0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0
1 0 1 0 0 0 1 1 1 0 0 0 0 1 0 1
0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0
0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0')
tdt <- data.table(t(dt))
tdt[,names(tdt):=lapply(.SD,function(x) {x[cumsum(x)>5] <- 0
x})]
t(tdt)
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
#> V1 0 0 0 1 1 0 1 1 1 0 0 0 0 0
#> V2 0 1 1 0 0 0 0 0 1 1 0 0 0 0
#> V3 1 0 1 0 0 0 1 1 1 0 0 0 0 0
#> V4 0 1 1 0 0 0 0 0 0 0 0 0 0 1
#> V5 0 1 0 1 0 1 0 0 0 0 0 0 0 1
#> [,15] [,16]
#> V1 0 0
#> V2 1 0
#> V3 0 0
#> V4 1 0
#> V5 1 0
Создано в 2020-04-23 пакетом Представить (v0.3.0)