2017-10-19 61 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

謝謝你,這似乎是做我需要它做的! –