2
큰 데이터 프레임을 가지고 있으며 모든 가변 변수를 도표로 만들고 싶습니다. 테이블()와 xtabs() 모두이 작업을 수행하지만, 문제는 :R - xtabs() 대 table() : 수준을 드롭하고 변수 이름을 정의합니까?
- xtabs는() 제가 필요하지 않은 변수 수준을 드롭 할 수 있지만 나를 차원의 이름을 정의 을 허용하지 않습니다
- table()을 사용하면 차원 이름을 정의 할 수 있지만 사용되지 않은 수준은 삭제할 수 없습니다.
dimensionnames를 정의해야하는 이유는 모든 것이 for-loop 내에서 발생한다는 것입니다. (왜냐하면 모든 사람이 모두를해야하기 때문입니다.) 이것은 의미없는 이름을 렌더링합니다. 다음은 의미하는 바를 보여주는 '간단한'예입니다.
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
데이터를 크로스 스 크라이 싱하는 두 가지 기능에는 각각 내가 사용하고 싶은 옵션이 있습니다. 왜 둘 다 할 수 없습니까?
아 코스에 포장하여 "드 인수 분해"인수 꽤 간단합니다. 수준을 떨어 뜨리는 것은 모두 요인에 관한 것입니다. 그 Dwin에게 감사드립니다! – maja