2016-12-27 12 views
0

sampledf1の変数ごとにbloxplotを作成し、sampledf2の単一の変数に対して作成するボックスプロットのセットを作成したいと考えています。別の変数を使用してデータフレームのRボックスプロットを作成する

実際の使用例は、k-meansを使用して一連のクラスタを作成し、クラスタリングに使用しているデータフレーム内の各変数を使用して、見つかった各クラスタの分布を確認することです。

sampledf1 <- as.data.frame(replicate(6, sample(c(1:10,NA)))) 
sampledf2 <- as.data.frame(replicate(1, sample(c(21:30,NA)))) 

次に、sampledf1の各変数がsampledf2の唯一の変数とペアになっているボックスプロットを見たいと思います。

sapply(boxplot(sampledf1~sampledf2$V1)) 

が、これは私にこのエラーを与える:私はのようなものを使いたい

Error in match.fun(FUN) : argument "FUN" is missing, with no default

とにかく私はこれを行うことができますdplyrうは素晴らしいことだが、私はすべてのを見ていません私はこれを行うために連鎖することができる関数です。

答えて

1

library(purrr)walkは、このような数式を渡そうとするとうまく動作します。 walk()sapplyのように機能し、オブジェクト内の要素を繰り返し処理します。 .は、names(sampledf1)の反復要素を指します。

これは、それが表すsampledf1の列で指定された各パネルを取得するために動作します。

library(purrr)  
par(mfrow = c(2,3)) 
purrr::walk(names(sampledf1), ~boxplot(sampledf1[,.]~sampledf2$V1, main = .)) 

enter image description here

+0

ありがとうございましたNathan、とにかくラベルを追加して、各ボックスプロットのデータがわかりましたか?または、私が名前(sampledf1)を行う場合は、sampledf1の変数の順番ですか? – Jazzmine

+0

あなたが正しい順番で処理していますが、ここでは 'map'は実際には必要ありませんが、シナリオに応じてそれぞれ異なる出力を持つ同じ関数です。私はラベル付きのバージョンで編集します – Nate

3

はここlapplyseq_alongを使用して方法です。我々はsampledf1の列をseq_alongを使って繰り返します。変数名は、インデックス、i、およびnames関数を使用して抽出できます。

par(mfrow = c(2,3)) 
lapply(seq_along(sampledf1), 
     FUN = function(i) 
      boxplot(sampledf1[,i] ~ sampledf2$V1, main = names(sampledf1)[i]) 
     ) 

enter image description here

2

あなたが第一の変形

library(reshape2) 
library(ggplot2) 
s.all = cbind(sampledf1, f2=sampledf2$V1) 
s.long = melt(s.all, id = 'f2') 
ggplot(s.long) + 
    geom_boxplot(aes(x=f2, group=f2, y=value)) + 
    facet_wrap(~variable) + 
    scale_x_continuous(breaks=unique(s.long$f2)) 

enter image description here

+0

これを共有してくれてありがとう、問題を解決するために複数の方法があると良いですし、私はプロットを学んでいます。 – Jazzmine

0

ggplot2長い形式にデータを再構築する場合は、ggplotとファセットを使用することができます。

library(reshape2) 
library(ggplot2) 

sampledf1$X <- sampledf2$V1 
ggplot(melt(sampledf1, id.vars="X", na.rm=T), aes(factor(X),value)) + 
    geom_boxplot() + facet_wrap(~ variable, nrow=2) 

enter image description here

関連する問題