首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R- xtabs() vs table ():下拉级别并定义变量名?

R- xtabs() vs table ():下拉级别并定义变量名?
EN

Stack Overflow用户
提问于 2012-01-15 15:21:27
回答 1查看 3.7K关注 0票数 2

我有一个大的数据,并想表所有变量-巴黎。table()和xtabs()都这样做,但问题是:

  1. xtabs()允许我删除未使用的变量级别,这是我需要的,但不允许我定义的名称,允许我定义维度名,但不允许删除未使用的级别。

我需要定义维度名的原因是,所有这些都发生在for-循环中(因为我需要做“每个人的每个人”),这使得名称变得毫无意义。下面是一个简单的例子来说明我的意思。

代码语言:javascript
复制
var.3=factor(rep(c("m","f","t"), c(5,5,2)))
df <- data.frame(var.1=rep(1:4, 1:4), var.2=rep(c("A","B"), 5), var3=var.3[1:10])
levels(df[,3])           # the "t" level is not in the df!
tabs.list<- list()
xtabs.list<- list()
for (i in 1:(ncol(df)-1)){
  for (j in (i+1):ncol(df)) {
    tabs.list[[paste(sep=" ", colnames(df)[i], "by",colnames(df)[j])]] <-
      table(df[,i],df[,j], dnn=list(colnames(df)[i], colnames(df)[j]))
    xtabs.list[[paste(sep=" ", colnames(df)[i], "by",colnames(df)[j])]] <-
      xtabs(~df[,i]+df[,j], drop.unused.levels=TRUE)
  }
}
tabs.list
xtabs.list
#What I want: 
for (i in 1:length(xtabs.list)){
names(dimnames(xtabs.list[[i]])) <- names(dimnames(tabs.list[[i]]))
}
xtabs.list

因此,两个用于交叉分类数据的函数都有一个我想使用的选项!?为什么我不能兼而有之?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-15 16:38:00

as.character中包装“去因式分解”参数非常容易。

代码语言:javascript
复制
tabs.list<- list()
for (i in 1:(ncol(df)-1)){
    for (j in (i+1):ncol(df)) {
      tabs.list[[paste(sep=" ", colnames(df)[i], "by",colnames(df)[j])]] <-
        table( as.character(df[,i]), 
               as.character(df[,j]), 
               dnn=list(colnames(df)[i], colnames(df)[j])) 
                              }
                           }
tabs.list
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8870805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档