1

下のデータの積み上げ棒グラフ、または少なくとも 2 つの棒グラフ (ヒストグラム) が必要です。しかし、私は方法を理解できません。plot(online) は解決策ではありません。探しています。下記を参照してください。

          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 

しかし、どのように?

4

5 に答える 5

3

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

于 2010-03-08T17:28:27.500 に答える
3

ggplot2 では、データを事前に集計する必要はありません。

library(ggplot2)
qplot(online, data = df, fill = offline)
qplot(offline, data = df, fill = online)
于 2010-03-10T12:14:30.057 に答える
2
#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))

代替テキスト

于 2010-03-08T18:51:51.283 に答える
1

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

簡潔にするために、最後の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
于 2010-03-08T18:10:24.380 に答える
0

私はこれを自分で行ったことはありませんが、多くの人が 2 番目の配列に配置するステップに使用する R パッケージを知っています。それは呼ばれreshapeます:

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

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

プロットの部分に関しては、おそらく両方とも、あなたが望むことを正確に行うための機能を持っていると思いますがlatticeggplot私はRの初心者なので、これ以上は言えません...

于 2010-03-08T16:46:36.083 に答える