如何在R中仅选择一个矩阵的一列

时间:2017-07-02 10:31:46

标签: r matrix dataframe plot

所以,我有一个data.frame,这是6 * 4500,这是前三行和列的一个例子:

create table student_partition(
      id bigint
     ,name string
     ,course array<string>)
PARTITIONED BY (address string)
ROW FORMAT DELIMiTED fields terminated by '\t'
collection items terminated by ','
stored as textfile;

当我使用时:

1912.5000   4246.6053   5543.7895
2080.6667   2484.7333   3317.6333
531.6667    4131.1000   5286.9000

我得到一个矩阵散点图。

  • 即,x vs y和x vs z是第一列。
  • y vs x,y vs z是第二列
  • z vs x,z vs y是第三列。

example

示例适用于完整的数据帧,只有三个第一列。 忽略丢失的x和y,我将它们剪掉,它们存在......

我的问题是如何才能绘制第一列。意思是,X vs y和X vs z 理论上我可以用循环和子图来完成它。我更喜欢让它变得高效。

1 个答案:

答案 0 :(得分:0)

考虑:

library(reshape2)
library(ggplot2)
df <- mtcars[,1:4]
head(df)
                   mpg cyl disp  hp
Mazda RX4         21.0   6  160 110
Mazda RX4 Wag     21.0   6  160 110
Datsun 710        22.8   4  108  93
Hornet 4 Drive    21.4   6  258 110
Hornet Sportabout 18.7   8  360 175
Valiant           18.1   6  225 105

以下是您不想要的内容:

plot(df)

enter image description here

现在,为了轻松生成分组或分面图形,ggplot2可能是您要使用的包。 ggplot2要求您以长格式传递数据框,这是通过melt数据框首先实现的,将x变量保持为id变量。这意味着你基本上是&#34;堆叠&#34;列彼此重叠,重复id变量并保持对它最初所属列的引用。在这里,我使用mtcars数据集作为示例,其中x是每小时英里数或mpg

df2 <- melt(df, id.vars = "mpg")
head(df2)
   mpg variable value
1 21.0      cyl     6
2 21.0      cyl     6
3 22.8      cyl     4
4 21.4      cyl     6
5 18.7      cyl     8
6 18.1      cyl     6

tail(df2)
    mpg variable value
91 26.0       hp    91
92 30.4       hp   113
93 15.8       hp   264
94 19.7       hp   175
95 15.0       hp   335
96 21.4       hp   109

拥有这种数据帧,您可以绘制使用例如。

ggplot(df2, aes(x=mpg, y=value)) + geom_point() + facet_wrap("variable", scales="free)

为每个组/初始列获取一个图表。

enter image description here