官术网_书友最值得收藏!

2.1 表格的轉換

2.1.1 表格的變換

在使用R ggplot2繪圖時,通常使用一維數據列表的數據框。但是如果導入的數據表格是二維數據列表,我們則需要使用reshape2包的melt()函數或者tidyr包的gather()函數,可以將二維數據列表的數據框轉換成一維數據列表(見圖2-1-1)。我們首先構造數據框:

圖2-1-1 表格變換的示意案例

        df<- data.frame(x=c('A', 'B', 'C'), '2010'=c(1,3,4), '2011'=c(3,5,2), check.names=FALSE)

(1)將寬數據轉換為長數據,將多行聚集成列,從而將二維數據列表變成一維數據列表:

        df_melt<- reshape2::melt(df, id.vars="x", variable.name="year", value.name = "value")
        df_gather<- tidyr:: gather(df, year, value, -x)

其中,id.vars ("x")表示由標識變量構成的向量,用于標識觀測的變量;variable.name ("year")表示用于保存原始變量名的變量的名稱;value.name("value")表示用于保存原始值的名稱。

(2)將長數據轉換為寬數據,將一列根據變量展開為多行,從而將一維數據列表變成二維數據列表:

        df_dcast<- reshape2:: dcast(df_melt, x~year, value.var="value")
        df_spread <- tidyr::spread(df_gather, year, value)

其中,dcast借助于公式來描述數據的形狀id.vars~variable.name,左邊參數表示id.vars ("x"),而右邊的參數表示需要variable.name ("year")。

主站蜘蛛池模板: 高雄县| 乐清市| 达拉特旗| 裕民县| 德清县| 南皮县| 信丰县| 张家界市| 运城市| 辉南县| 鄂托克旗| 嘉义市| 西贡区| 祁连县| 阳江市| 漳州市| 九台市| 塘沽区| 延安市| 炎陵县| 阿坝| 兴安盟| 玉田县| 竹北市| 成都市| 牡丹江市| 抚宁县| 林甸县| 六盘水市| 安溪县| 元阳县| 苍溪县| 长阳| 慈利县| 文山县| 边坝县| 延寿县| 安顺市| 应用必备| 永新县| 台州市|