2016-09-04 9 views
0

列名を使用せずに、R内のデータフレーム内の1つの列と他のすべての列との間の相関を計算するにはどうすればよいですか? は私がddply使用しようと、私はちょうど2人の列名すなわちグループ間の相関関係

library(plyr) 
ddply(iris, ~Species, summarize, cormat=cor(Sepal.Length,Petal.Width)) 

しかし、どのように列名を使用せずに、種によって破壊他のすべての列と列1の相関を取得するを使用している場合、それは動作しますか?

答えて

1

このようなのでしょうか?これは、各種の相関行列を生成する。

by(iris[,1:4], iris$Species, cor)

+0

を使用してdplyrでこれを行うことができますありがとうございました! – gori73

0

あなたは

library(dplyr) 
cormat_res <- iris %>% 
    group_by(Species) %>% 
    do(cormat = cor(select(., -matches("Species")))) 


> cormat_res[[2]] 
[[1]] 
      Sepal.Length Sepal.Width Petal.Length Petal.Width 
Sepal.Length 1.0000000 0.7425467 0.2671758 0.2780984 
Sepal.Width  0.7425467 1.0000000 0.1777000 0.2327520 
Petal.Length 0.2671758 0.1777000 1.0000000 0.3316300 
Petal.Width  0.2780984 0.2327520 0.3316300 1.0000000 

[[2]] 
      Sepal.Length Sepal.Width Petal.Length Petal.Width 
Sepal.Length 1.0000000 0.5259107 0.7540490 0.5464611 
Sepal.Width  0.5259107 1.0000000 0.5605221 0.6639987 
Petal.Length 0.7540490 0.5605221 1.0000000 0.7866681 
Petal.Width  0.5464611 0.6639987 0.7866681 1.0000000 

[[3]] 
      Sepal.Length Sepal.Width Petal.Length Petal.Width 
Sepal.Length 1.0000000 0.4572278 0.8642247 0.2811077 
Sepal.Width  0.4572278 1.0000000 0.4010446 0.5377280 
Petal.Length 0.8642247 0.4010446 1.0000000 0.3221082 
Petal.Width  0.2811077 0.5377280 0.3221082 1.0000000 
+0

Rにコピーするだけでエラーになります。もう少し説明していただけますか? %>%とは何ですか?私はRでうまくいきません。 – gori73

+0

申し訳ありませんが、あなたの質問を誤解し、plyrの新しいバージョンである[dplyr](https://cran.r-project.org/web/packages/dplyr/)で解決策を書いています。 – Stedy