2017-10-19 59 views
0

原谅,如果这是显而易见的,但我是很新的R.和数 - 矢量长度变化

什么,我需要做的是把一个数据集由一系列0和1到5的块组成,在每个块中总结1。

所以,

1,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0, 0,1,0,1,1

应导致:

2,1,1,0,3

,使这个有点棘手的事情是存在的确切人数变化每个矢量的字符数,所以不是像这个例子中的25个和零,有的可能是21,26,23等等。

无论矢量的长度如何变化,我都需要在五个分箱中得到的总和。

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

非常感谢您提前!

编辑:感谢您链接到前一个线程,Cath。我的问题不同于它,因为我需要总结的垃圾箱(所以,不是很多,我想...)

+1

当字符数不能被5整除时,箱子应该如何显示? – LAP

+0

如果长度是10,那么我们还要5块吗?或2? – zx8754

+0

LAP:您发布的功能首先将不均匀数量的0或1添加到第一个垃圾箱。这对我来说是可以接受的。 –

回答

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个箱:

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 
+0

谢谢你,这似乎是做我需要它做的! –