문제

아래 데이터의 스택 된 바 플로트 또는 최소 2 개의 바 플로트 (히스토그램)를 원합니다. 그러나 나는 방법을 알 수 없습니다. 플롯 (온라인)은 해결책이 아니며 찾고 있습니다. 아래를 참조하십시오.

          online              offline
1         sehrwichtig             wichtig
2             wichtig           unwichtig
3         sehrwichtig           unwichtig
4         sehrwichtig         sehrwichtig
5         sehrwichtig         sehrwichtig
6         sehrwichtig           unwichtig
7         sehrwichtig           unwichtig
8             wichtig             wichtig
9             wichtig           unwichtig
10        sehrwichtig         sehrwichtig
11        sehrwichtig             wichtig
12        sehrwichtig           unwichtig
13            wichtig         sehrwichtig
14        sehrwichtig             wichtig

데이터가 집계되는 단계가 필요하다는 것을 알고 있습니다.

                   online        offline 
   sehrwichtig           6         7 
   unwichtig             0         1 
   wichtig               3         5 

하지만 어떻게?

도움이 되었습니까?

해결책

그 집계는 단순한 전화 일뿐입니다 table 내면에 apply:

R> foo <- data.frame(online=sample(c("S","W","U"),10,TRUE), 
                     offline=sample(c("S","W","U"),10,TRUE))
R> apply(foo,2,table)
  online offline
S      3       1
U      4       5
W      3       4

당신이 먹을 수있는 것 barplot.

다른 팁

GGPLOT2를 사용하면 데이터를 사전 응집 할 필요가 없습니다.

library(ggplot2)
qplot(online, data = df, fill = offline)
qplot(offline, data = df, fill = online)
#generate data
df<- read.table(textConnection('
      online              offline
 sehrwichtig             wichtig
     wichtig           unwichtig
 sehrwichtig           unwichtig
 sehrwichtig         sehrwichtig
 sehrwichtig         sehrwichtig
 sehrwichtig           unwichtig
 sehrwichtig           unwichtig
     wichtig             wichtig
     wichtig           unwichtig
 sehrwichtig         sehrwichtig
 sehrwichtig             wichtig
 sehrwichtig           unwichtig
     wichtig         sehrwichtig
 sehrwichtig             wichtig'
 ),header=T)

#factor levels should be the same
levels(df$online) <- levels(df$offline)

my_table <- t(aaply(df,2,table))

library(graphics)
barplot2(my_table,legend = rownames(my_table), ylim = c(0, 20))

alt text

Dirk의 대답은가는 길이지만 OP의 데이터에서는 간단합니다. apply(foo,2,table) 작동하지 않을 것입니다. 아마도 0 항목을 처리해야합니다.

my.data <- "online              offline
1         sehrwichtig             wichtig
2             wichtig           unwichtig
3         sehrwichtig           unwichtig
4         sehrwichtig         sehrwichtig
5         sehrwichtig         sehrwichtig
6         sehrwichtig           unwichtig
7         sehrwichtig           unwichtig
8             wichtig             wichtig
9             wichtig           unwichtig
10        sehrwichtig         sehrwichtig
11        sehrwichtig             wichtig
12        sehrwichtig           unwichtig
13            wichtig         sehrwichtig
14        sehrwichtig             wichtig"

df <- read.table(textConnection(my.data))

df.labels <- unique(as.character(apply(df,2,as.character)))
tallies <- apply(df,2,function(x)table(x)[df.labels])
tallies[is.na(tallies)] <- 0
rownames(tallies) <- df.labels

Brevity를 위해 마지막 3 줄을 결합 할 수 있습니다.

tallies <- apply(df,2,function(x){y <- table(x)[df.labels];
                                   names(y) <- df.labels; y[is.na(y)] <- 0; y})

출력은 다음과 같습니다.

> tallies
            online offline
sehrwichtig     10       4
wichtig          4       4
unwichtig        0       6

나는 이것을 직접하지 않았지만, 많은 사람들이 그것을 두 번째 배열에 넣는 단계에 사용하는 R 패키지를 알고 있습니다. 라고 불린다 reshape:

http://www.statmethods.net/management/reshape.html

http://had.co.nz/reshape/introduction.pdf

플로팅 부분에 관해서는, 나는 그렇게 생각합니다 lattice 또는 ggplot 아마도 둘 다 당신이 원하는 것을 정확하게 수행하는 기능을 가지고 있지만, 다시 나는 R 초보자이므로 훨씬 더 말할 수는 없습니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top