R可視化數據必要格式——長格式

一、引言

? ? ? ? 我們在對數據進行可視化時遇到最頭疼、最常見的問題是什么?數據問題。

? ? ? ? 因為我們往往不會從零自己編程進行可視化,往往是現有模板或積累,而正確的數據格式對應正確的圖形包要求,一定會正確出圖,所以只有一個問題——數據格式問題。

? ? ? ? 在R中,絕大多數圖形要求的格式——都是長格式。

?二、定義

? ? ? ? ?何為長格式??

? ? ? ? ?運行下面這個代碼,你會有所理解:

library(tidyr)  
# 假設的寬格式數據(從長格式轉換而來)  
wide_data <- data.frame(  City = c("CityA", "CityB", "CityC"),  Year = c(2020, 2020, 2020),  Education = c(100, 110, 95),  Healthcare = c(120, 130, 115),  Transportation = c(80, 90, 75)  
)  
print(wide_data)
# 轉換為長格式數據  
long_data <- pivot_longer(wide_data,  cols = -c(City, Year), # 指定哪些列需要被轉換成長格式(除了City和Year)  names_to = "Category", # 新增列的名稱,用于存儲原寬格式中的列名  values_to = "Expenditure") # 新增列的名稱,用于存儲原寬格式中的值  
# 查看長格式數據  
print(long_data)

我們習慣的寬格式如下(一個城市在某一年對應的教育、健康及交通指數):?

這是轉化過后的長格式(將教育、健康及交通列進行轉換):

? ? ? ? 也就是說, 我選定n列,這n列的列名重新生成一列(names_to),這n列的數據重新生成一列(values_to),這兩列相互對應。

三、理解

? ? ? ? 為什么要這樣呢?

? ? ? ?我們都熟悉在R中是按列名操作數據的,如果是寬格式,那么寬,不方便操作。而轉換成長格式呢?我們就可以方便地對兩列數據進行操作。

? ? ? ?并且要知道”“的概念,上述例子中,有三個組別:CityA、B、C,而每一組又有三個標簽(組別):教育、健康、交通。

? ? ? 運行下面這個例子體會:

# 制作分組柱狀圖  
ggplot(long_data, aes(x = Category, y = Expenditure, fill = Category)) +  geom_bar(stat = "identity", position = "dodge") + # 使用identity統計量,并設置位置為分組(dodge)  facet_wrap(~ City, scales = "free_y") + # 按城市分組,y軸比例自由調整  labs(title = "分組柱狀圖:不同城市的各類支出",  x = "類別",  y = "支出金額",  fill = "類別") +  theme_minimal() + # 使用簡約主題  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋轉x軸標簽以改善可讀性  

? ? ? ? ?按城市為大組進行分類:

運行下述代碼:

ggplot(long_data, aes(x = City, y = Expenditure, fill = City)) +  geom_bar(stat = "identity", position = "dodge") + # 使用identity統計量,并設置位置為分組(dodge)  facet_wrap(~ Category, scales = "free_y") + # 按城市分組,y軸比例自由調整  labs(title = "分組柱狀圖:不同城市的各類支出",  x = "類別",  y = "支出金額",  fill = "類別") +  theme_minimal() + # 使用簡約主題  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋轉x軸標簽以改善可讀性  

按照 教育、健康、交通為大組進行分類:

到這里,相信你對長格式及數據格式的使用都有了深刻理解,自己去試試吧!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/39013.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39013.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39013.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

調試 hipcc 的llvm llc gpu目標代碼生成模塊

源碼&#xff1a; hello_vectorAdd.hip: __global__ void vectorAdd(const float *A, const float *B, float *C) {int i blockDim.x * blockIdx.x threadIdx.x;C[i] A[i] B[i] 0.0f; } Makefile: x.O1.s: hello_vectorAdd.hip../../local_amdgpu/bin/clang ./hello_vec…

力扣hot100-普通數組2

文章目錄 題目&#xff1a;輪轉數組方法1-使用額外的數組方法2-三次反轉數組 除自身以外數組的乘積方法1-用到了除法方法2-前后綴乘積法 題目&#xff1a;輪轉數組 原題鏈接&#xff1a;輪轉數組 方法1-使用額外的數組 方法1是自己寫出來的。方法2參考的別人的&#xff0c;…

通配符和正則表達式之間的關系

通配符和正則表達式&#xff08;正則&#xff09;都是用于匹配字符串的工具&#xff0c;但它們的復雜性和用途有所不同。下面是它們之間的主要關系和區別&#xff1a; 通配符 通配符主要用于簡單的模式匹配&#xff0c;常見于文件系統操作中&#xff0c;例如在命令行中查找文…

AttackGen:一款基于LLM的網絡安全事件響應測試工具

關于AttackGen AttackGen是一款功能強大的網絡安全事件響應測試工具&#xff0c;該工具利用了大語言模型和MITRE ATT&CK框架的強大功能&#xff0c;并且能夠根據研究人員選擇的威脅行為組織以及自己組織的詳細信息生成定制化的事件響應場景。 功能介紹 1、根據所選的威脅行…

【MindSpore學習打卡】應用實踐-計算機視覺-FCN圖像語義分割-基于MindSpore實現FCN-8s進行圖像語義分割的教程

圖像語義分割是計算機視覺領域中的一個重要任務&#xff0c;它旨在對圖像中的每個像素進行分類&#xff0c;從而實現對圖像內容的詳細理解。在眾多圖像語義分割算法中&#xff0c;全卷積網絡&#xff08;Fully Convolutional Networks, FCN&#xff09;因其端到端的訓練方式和高…

7.7、指針和函數

代碼 #include <iostream> using namespace std;//實現兩個數字進行交換 void swap01(int a, int b) {int temp a;a b;b temp;cout << "swap01a " << a << endl;cout << "swap01b " << b << endl; }void sw…

08 docker Registry搭建docker私倉

目錄 本地鏡像發布流程 1. docker pull registry 下載鏡像 2. docker run 運行私有庫registry 3. docker commit 構建鏡像 4. docker tag 修改新鏡像&#xff0c;使之符合私服規范tag 5. 修改配置文件使之支持http 6. curl驗證私服庫上有什么鏡像 7. push推送 pull拉取 …

Activity、Window、DecorView的關系

目錄 一、Activity、Window、DecorView的層級關系如下圖所示&#xff1a; 1、Activity 2、Window 3、DecorView 二、DecorView初始化相關源碼 三、DecorView顯示時機 前言&#xff1a; 不同的Android版本有差異&#xff0c;以下基于Android 11進行講解。 一、Activi…

Halide AOT模式

這種模式會提前&#xff0c;會提前編譯好&#xff0c;變成dll什么的&#xff0c;可接受任何輸入的參數運行。 然后這樣調用&#xff0c;必須要make一下前一個file&#xff0c;才有后面的.h

魔行觀察-AI數據分析-蜜雪冰城

摘要 本報告旨在評估蜜雪冰城品牌作為投資對象的潛力和價值&#xff0c;基于其經營模式、門店分布、人均消費、覆蓋省份等關鍵指標進行分析。 數據數據源&#xff1a;魔行觀察&#xff1a;http://www.wmomo.com/#/brand/brandDetails?code10013603 品牌概覽 蜜雪冰城是中國…

拼多多職位數據信息采集

數據信息采集 洛哥爬蟲【視頻】 愛寫爬蟲 我愛扣腳 https://careers.pinduoduo.com/jobs#/from DrissionPage import ChromiumPage, ChromiumOptions def fetch_pinduoduo_jobs():# 創建ChromiumOptions對象co ChromiumOptions()# 提供瀏覽器可執行文件的路徑path rC:\Pro…

Vue 爬坑

都是基于最新的Vue3版本 "vue": "^3.4.29" 1 vue組建樣式設置 <script setup lang"ts"> import HelloWorld from ./components/HelloWorld.vue </script><template><div><a href"https://vitejs.dev" tar…

RPA 第一課

RPA 是 Robotic Process Automation 的簡稱&#xff0c;意思是「機器人流程自動化」。 顧名思義&#xff0c;它是一種以機器人&#xff08;軟件&#xff09;來替代人&#xff0c;實現重復工作自動化的工具。 首先要說一句&#xff0c;RPA 不是 ChatGPT 出來之后的產物&#x…

Ubuntu24.04安裝Skynet環境

安裝依賴 sudo apt-get -y install gcc sudo apt-get -y install g sudo apt-get -y install make sudo apt-get install -y autoconf automake libtool sudo apt-get install -y git 或者可以用&#xff1a; sudo apt-get -y install gcc g make autoconf automake libtool…

升級springboot3

坑爹的發版流水線&#xff0c;管天管地&#xff0c;springboot2過了維護期&#xff0c;就催著我們升級。 導致必須上jdk17 記錄一下升級需要處理的事情 先升級springboot和cloud&#xff0c;這里定下基調&#xff0c;其他的才好跟著升級 https://spring.io/projects/spring-b…

如何在Java中使用正則表達式

如何在Java中使用正則表達式 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 正則表達式&#xff08;Regular Expression&#xff0c;簡稱Regex或RegExp&#…

elementui中@click短時間內多次觸發,@click重復點擊,做不允許重復點擊處理

click快速點擊&#xff0c;發生多次觸發 2.代碼示例&#xff1a; //html<el-button :loading"submitLoading" type"primary" click"submitForm">確 定</el-button>data() {return {submitLoading:false,}}//方法/** 提交按鈕 */sub…

分布式鎖——基于Redis分布式鎖

單機鎖 服務器只有一個&#xff0c;JVM只有一個。 用synchronized加鎖&#xff0c;對lock對象加鎖&#xff0c;只有線程1結束&#xff0c;線程2,3才會開始。 再用uid避免一個線程多次進來。 分布式鎖 真正上線時&#xff1a; 【注&#xff1a;這些服務器連接的是一個Redis集…

STM32入門筆記(03): ADC(SPL庫函數版)(2)

A/D轉換的常用技術有逐次逼近式、雙積分式、并行式和跟蹤比較式等。目前用的較多的是前3種。 A/D轉換器的主要技術指標 轉換時間 分辨率 例如&#xff0c;8位A/D轉換器的數字輸出量的變化范圍為0&#xff5e;255&#xff0c;當輸入電壓的滿刻度為5V時&#xff0c;數字量每變化…

如何學好自動化測試

1. 什么是自動化測試 自動化測試是使用腳本和工具來執行測試任務&#xff0c;以替代手工測試過程。它可以提高效率、減少人工錯誤&#xff0c;并增加測試覆蓋率。在軟件開發過程中&#xff0c;自動化測試已經成為了不可或缺的一部分。 自動化測試主要有以下好處&#xff1a; …