原谅如果这是显而易见的,但我对R.很新。
我需要做的是将由一系列0和1组成的数据集划分为五个块,总计每个块中的1。
所以,
1,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1 ,1
应该导致:
2,1,1,0,3
使这个稍微有点棘手的是每个矢量的确切字符数有变化,所以不是像示例中的25个1和0,有些可能是21,有些是26,有些是23,等等。 / p>
无论向量的长度如何变化,我都需要在五个箱中得到总和。
这样做的原因是我从事中世纪和早期现代文本的语言学和数字人文学科的工作。我正在测试手稿和早期印刷书籍中是否更有可能出现缩写。我想知道第五列中的数字是否最终大于其余数字,并进行卡方检验以确定结果是否具有统计相关性。
非常感谢你!
编辑:感谢您链接到之前的帖子,Cath。我的问题与此不同,因为我需要总结一下这些箱子(所以,不是很多,我猜...)
答案 0 :(得分:0)
将矢量划分为五个块的可能解决方案是:
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个bin:
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
然后在列表中只有lapply
sum
:
> lapply(chunks, sum)
$`1`
[1] 2
$`2`
[1] 1
$`3`
[1] 1
$`4`
[1] 2
$`5`
[1] 1