数据集中的1和0的总数在向量长度上分为五个区间



如果这是显而易见的,请原谅,但我对R.非常陌生

我需要做的是将一个由0和1组成的数据集划分为五个块,将每个块中的1相加。

所以,

1,1,0,0,1,1

应导致:

2,1,1,0,3

这有点棘手的是,每个向量的确切字符数存在变化,因此与本例中的25个1和0不同,有些可能是21,有些是26,有些是23,等等。

不管向量的长度如何变化,我都需要五个仓中的结果和。

之所以这么做,是因为我从事语言学和数字人文学科的工作,研究中世纪和现代早期的文本。我正在测试缩写是否更有可能出现在手稿和早期印刷书籍的末尾。我想知道的是,第五列中的数字是否最终大于其他数字,并进行卡方检验,以确定结果是否具有统计学相关性。

提前非常感谢!

编辑:感谢您链接到上一个线程,Cath。我的问题与此不同,因为我需要总结垃圾箱(所以,我想不会太多…)

将矢量划分为五个块的可能解决方案是:

test <- rep(c(0,1,0), 7)
chunk2 <- function(x,n) split(x, cut(seq_along(x), n, labels = FALSE)) ## stolen from here: 
https://stackoverflow.com/questions/3318333/split-a-vector-into-chunks-in-r
> test
[1] 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0

在矢量上使用chunk2函数,选择5个仓:

chunks <- chunk2(test, 5)
> chunks
$`1`
[1] 0 1 0 0 1
$`2`
[1] 0 0 1 0
$`3`
[1] 0 1 0 0
$`4`
[1] 1 0 0 1
$`5`
[1] 0 0 1 0

然后只有lapplysum在列表上:

> lapply(chunks, sum)
$`1`
[1] 2
$`2`
[1] 1
$`3`
[1] 1
$`4`
[1] 2
$`5`
[1] 1

最新更新