R:如何将表重新整形为向量

Ben*_*Ben 4 r list vector reshape

我正在研究Kruschke中的示例,Doing Bayesian Data Analysis需要一些帮助来理解如何将数据转换为他的代码示例所需的格式.在第22章他有一张这样的表

         Blue  Brown  Green Hazel
Black    20    68     5     15
Blond    94    7      16    10
Brunette 84    119    29    54
Red      17    26     14    14
Run Code Online (Sandbox Code Playgroud)

我很乐意输入表格R,将其输入电子表格并使用read.table("clipboard", header=T, sep="\t")或输入R就像这样

con.table2 <- matrix(c(20,68,5,15,94,7,16,10,84,119,29,54,17,26,14,14),nrow=4,byrow=TRUE)
dimnames(con.table2) <- list(c("Black","Blond","Brunette","Red"),c("Blue","Brown","Green","Hazel"))
Run Code Online (Sandbox Code Playgroud)

但在他的代码中,他像这样呈现这个表,准备分析(完整的代码在这里http://www.indiana.edu/~kruschke/DoingBayesianDataAnalysis/Programs/PoissonExponentialJagsSTZ.R)

Freq = c(68,119,26,7,20,84,17,94,15,54,14,10,5,29,14,16)
Eye = c("Brown","Brown","Brown","Brown","Blue","Blue","Blue","Blue","Hazel" # runs off the page of his book
Hair = c("Black","Brunette","Red","Blond","Black","Brunette","Red","Blond","Black" # runs off the page of his book
Run Code Online (Sandbox Code Playgroud)

看起来该表已被转换为三个向量.最有效的方法是什么?我想用自己的数据替换他的数据,因此学习如何将数据转换为此分析所需的格式会很棒.

Jos*_*ien 8

为此,我将melt()reshape2包中使用:

library(reshape2)
df <- melt(con.table2, varnames=c("Hair", "Eye"), value.name="Freq")

# df is a data frame, a list from which you can easily extract the
# component vectors "Hair", "Eye", and "Freq. 
# Try, for example:
str(df)
df$Hair    
Run Code Online (Sandbox Code Playgroud)