2016-08-15 45 views
-3

我有這種格式的數據:長期結構變化對全結構中的R

enter image description here

我怎樣才能重新組織在以下格式R上的數據?

enter image description here

換句話說:爲每一個觀察的新列,如果發生針對特定組觀察粘貼的簡單計數。

+0

想要'table(df $ v1,df $ v2)'?順便說一下,請閱讀R標籤說明 - 他們要求您輸入數據,而不是僅顯示屏幕截圖。 –

+0

您正在尋找R'reshape'軟件包 – abhiieor

回答

1
dat <- data.frame(letter = c("A", "A", "A", "A", 
          "B", "B", "B", "C", 
          "C", "C", "C", "D"), 
        number = c(2, 3, 4,5, 4, 5, 6, 1, 3, 5, 7, 1)) 

我想提供一個R基本的解決方案(也許只是爲了好玩...),基於矩陣的索引。

lev <- unique(dat[[1L]]); k <- length(lev) ## unique levels 
x <- dat[[2L]]; p <- max(x) ## column position 
z <- matrix(0L, nrow = k, ncol = p, dimnames = list(lev, seq_len(p))) ## initialization 
z[cbind(match(dat[[1L]], lev), dat[[2L]])] <- 1L ## replacement 
z ## display 

# 1 2 3 4 5 6 7 
#A 0 1 1 1 1 0 0 
#B 0 0 0 1 1 1 0 
#C 1 0 1 0 1 0 1 
#D 1 0 0 0 0 0 0 
2

這是使用tidyr包最容易實現:

library(tidyr) 

dat <- data.frame(letter = c("A", "A", "A", "A", 
          "B", "B", "B", "C", 
          "C", "C", "C", "D"), 
        number = c(2, 3, 4,5, 4, 5, 6, 1, 3, 5, 7, 1), 
        value = 1) 

spread(dat, number, value)