Как я могу использовать для цикла в R, чтобы внести некоторые изменения в мои данные? - PullRequest
0 голосов
/ 06 июня 2019

будет очень признателен, если кто-нибудь поможет мне с этим:

У меня есть такой набор данных:

1   0
2   0
3   0
4   1
1   0
2   0
3   0
4   1
1   0
2   0
3   0
4   1
1   0
2   0
3   0
4   1
1   0
2   0
3   0
4   1
1   0
2   1
3   0
4   0

Есть ли способ использовать цикл и печать, чтобы мои данные были такими?

1   0
2   0
3   0
4   1
[*,*,1]: 1    2  :=
1   0
2   0
3   0
4   1
[*,*,2]: 1    2  :=
1   0
2   0
3   0
4   1
[*,*,3]: 1    2  :=
1   0
2   0
3   0
4   1
[*,*,4]: 1    2  :=
1   0
2   0
3   0
4   1
[*,*,5]: 1    2  :=
1   0
2   1
3   0
4   0

Я сделал 200 соток со своей рукой, и теперь я действительно не могу продолжать это делать!

1 Ответ

0 голосов
/ 06 июня 2019

Мы можем использовать split на основе группировки, созданной путем взятия совокупной суммы первого столбца, в котором значение равно 1, в list data.frames

lst1 <- split(df1, cumsum(df1$col1 == 1))

Теперь мы можемцикл по последовательности list и print

 for(i in seq_along(lst1)) { 
    cat(paste0("[*,*,", i, "]: 1  2 :="), "\n")
    cat(do.call(paste, c(lst1[[i]], sep="\t", collapse="\n")), sep="\n")
    }
#[*,*,1]: 1  2 := 
#1  0
#2  0
#3  0
#4  1
#[*,*,2]: 1  2 := 
#1  0
#2  0
#3  0
#4  1
#[*,*,3]: 1  2 := 
#1  0
#2  0
#3  0
#4  1
#[*,*,4]: 1  2 := 
#1  0
#2  0
#3  0
#4  1
#[*,*,5]: 1  2 := 
#1  0
#2  0
#3  0
#4  1
#[*,*,6]: 1  2 := 
#1  0
#2  1
#3  0
#4  0

data

df1 <- structure(list(col1 = c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), col2 = c(0L, 
0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 
0L, 0L, 1L, 0L, 1L, 0L, 0L)), class = "data.frame", row.names = c(NA, 
-24L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...