2017-05-09 77 views
1

我想遍歷數據框並針對特定列(如價格)繪製每列。迭代數據框併爲每列創建一個圖

我迄今所做的是:

for(i in ncol(dat.train)) { 
ggplot(dat.train, aes(dat.train[[,i]],price)) + geom_point() 

}

我想是有通過繪製對決策變量的第一次介紹我的數據(大約300列)(即價格)

我知道有一個類似的問題,但我不明白爲什麼上述不是真的工作。

+0

使用'AES(dat.train [我],價格)'代替。 – Wolfgang

回答

1

你可以這樣做,我已經使用mtcars數據繪製其他連續變量與MPG。你必須將數據融合成長形式(使用聚集),然後使用ggplot將這些連續變量(disp,drat,qsec等)與mpg進行比較。在你的情況下,而不是MPG你會花費價格和所有其他連續變量被融化(像這裏disp,drat,qsec等),其餘的分類變量可以採取形狀和顏色等(可選)。

library(tidyverse) 
    mtcars %>% 
     gather(-mpg, -hp, -cyl, key = "var", value = "value") %>% 
     ggplot(aes(x = value, y = mpg, color = hp, shape = factor(cyl))) + 
     geom_point() + 
     facet_wrap(~ var, scales = "free") + 
     theme_bw() 

編輯

這是另一種情況下,解決方案,我們需要爲每個變量的不同的圖。

創建一個像這樣的變量列表:lyst <- list("disp","hp"),您可以使用colnames函數獲取所有變量名稱。使用lapply來遍歷數據框中的所有「精簡」對象。

setwd("path") ###set the working directory here, This is the place where all the files are saved. 

pdf(file=paste0("one.pdf")) 
    lapply(lyst, function(i)ggplot(mtcars, aes_string(x=i, y="mpg")) + geom_point()) 
dev.off() 

pdf文件將會是。可以用在你的工作目錄中的所有圖表的PDF文件,你已經先設置

輸出解決方案產生:

enter image description here

+0

約300列。我認爲不可避免地要把它們放在一起。 –

+0

@ J.Ze請你提一下問題中的所有事實,有人會如何知道有太多的變量要繪製。我現在會提出一個不同的解決方案。 – PKumar

+0

你說得對。對不起 –

相關問題