到目前为止,我只看到过R交叉表有两个定性(分类)变量。我想看一个交叉表的工作示例,使用R表示一个定性变量和一个定量变量。例如,如果我想找到质量评级(良好,公平,差)和价格(10美元 - 19美元,20美元 - 29美元,30美元 - 39美元)之间的关系,我怎样才能使用R实现这一目标?任何帮助将不胜感激。
答案 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)
通过调整代码,您可以设置自己的类别。输出将如下所示:
这是你想要的吗?