R中具有定性和定量变量的交叉表

时间:2017-07-29 12:52:14

标签: r

到目前为止,我只看到过R交叉表有两个定性(分类)变量。我想看一个交叉表的工作示例,使用R表示一个定性变量和一个定量变量。例如,如果我想找到质量评级(良好,公平,差)和价格(10美元 - 19美元,20美元 - 29美元,30美元 - 39美元)之间的关系,我怎样才能使用R实现这一目标?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果我理解您的问题,您希望跨群体汇总数字数据。

在R中有很多方法可以做到这一点,但我最喜欢的是FSA包中的一个函数。

其他示例可在以下链接中找到:R Handbook: Descriptive Statistics

if(!require(FSA)){install.packages("FSA")}

Price = c(10,11,12,13,14,17,19,125,25,22,21,22)
Quality = rep(c("Good", "Fair", "Poor"),4)

Quality = factor(Quality, 
                 order = c("Poor", "Good", "Fair"))

Data = data.frame(Price, Quality)

library(FSA)

Summarize(Price ~ Quality, 
          data=Data)

答案 1 :(得分:0)

绝对不是最顺畅的选择,但一个可行的选择

    # Construct dataframe
    quality <- rep(c("Good", "Fair", "Poor"),4)
    price <- c(10,11,12,13,14,17,19,125,25,22,21,22)
    price.cat <- rep(NA, length(price))
    data <- data.frame(quality, price, price.cat)

    # Define new factor variable for certain price categories
    for (i in 1:length(price.cat)){

    # Category 0$-19$
    if (data[i,"price"]<=19){
    data[i, "price.cat"] <- "0-19"}

    # Category 20$-29$
    if (data[i,"price"]>=20 & data[i,"price"]<=29){
    data[i, "price.cat"] <- "20-29"}

    # Category 30$-125$
    if (data[i,"price"]>=30 & data[i,"price"]<=125){
    data[i, "price.cat"] <- "30-125"}
    }

    # Crosstabulate
    table(data$quality, data$price.cat)

通过调整代码,您可以设置自己的类别。输出将如下所示:

enter image description here

这是你想要的吗?