如何在R中使用for循环对数据进行一些更改?

时间:2019-06-05 22:02:10

标签: r

如果有人可以帮助我,将不胜感激:

我有一个这样的数据集:

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 :(得分:0)

我们可以根据通过将第一列(其值为1)的累积总和放入data.frames split中而创建的分组来使用list

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

现在,我们可以遍历listprint

的序列
 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

数据

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))