R語言學習筆記6-數據框

R語言學習筆記6-數據框

  • 數據框(DataFrame)介紹
  • 數據框用途
  • 創建數據框
  • 從矩陣創建數據框
  • 索引和切片
  • 添加和修改列
  • 數據框的預處理
  • 數據框的排序
  • 數據框的合并與拆分
  • 數據框的計算與匯總
  • 數據框的篩選
  • 處理缺失值
  • 應用函數處理數據
  • 重塑數據框
  • 使用 dplyr 進行數據框的管道操作
  • 數據框的時間序列操作
  • 大數據框的處理
  • 數據框的繪圖
  • 數據框的文本處理
  • 數據框的連接與關聯
    • 按行或列連接數據框
    • 按鍵值關聯數據框
  • 數據框的條件處理與邏輯操作
    • 條件篩選
    • 邏輯操作
  • 數據框的匯總與統計分析
    • 分組匯總
    • 統計計算

數據框(DataFrame)介紹

數據框是R語言中用于存儲和處理表格數據的重要數據結構。由行和列組成,每列可以包含不同類型的數據,但同一列中的數據類型必須相同。數據框中的每一列都有一個列名,用于標識數據的內容

數據框用途

1. 數據清洗與預處理: 在數據分析過程中,數據常常需要進行清洗和預處理,包括缺失值處理、數據轉換、重命名變量等操作。數據框提供了豐富的函數和方法來進行這些操作,使數據達到分析要求的格式和質量
2. 數據分析與統計: 數據框可以通過內置的函數和外部包(如dplyr、tidyverse等)進行各種統計計算、匯總、分組操作和復雜的數據邏輯處理。這些操作可以從數據中提取有用信息、進行趨勢分析、建立模型等
3. 數據可視化: R語言中的數據可視化包(如ggplot2)可以直接接受數據框作為輸入,通過簡單的代碼生成高質量的統計圖表。使得可以快速理解數據的特征和趨勢

創建數據框

可使用 data.frame() 函數直接創建數據框

# 創建一個基礎的數據框
df <- data.frame(Column1 = c(1, 2, 3),Column2 = c("A", "B", "C"),Column3 = c(TRUE, FALSE, TRUE)
)

從矩陣創建數據框

對于一個矩陣,可以使用 as.data.frame() 函數將其轉換為數據框

# 創建一個矩陣
mat <- matrix(1:6, nrow = 2)
# 將矩陣轉換為數據框
df_from_mat <- as.data.frame(mat)

索引和切片

可使用列名或行號進行索引和切片操作

# 選擇指定列
selected_columns <- df[, c("Column1", "Column2")]# 選擇指定行
selected_rows <- df[c(1, 3), ]# 使用列名選擇
column1_values <- df$Column1
column1_values_alt <- df["Column1"]# 使用邏輯條件選擇
filtered_data <- df[df$Column1 > 2, ]

添加和修改列

# 添加新列
df$NewColumn <- c(4, 5, 6)# 修改列的值
df$Column1 <- c(7, 8, 9)

數據框的預處理

對數據框進行重命名、類型轉換和變量重編碼等操作

# 變量重命名
names(df)[3] <- "NewName"# 修改變量類型
df$Column1 <- as.numeric(df$Column1)# 變量重編碼
df$Column2[df$Column2 == "A"] <- "X"
df$Column2[df$Column2 == "B"] <- "Y"

數據框的排序

使用 order() 函數對數據框進行排序

# 按照 Column1 列升序排序
df_sorted <- df[order(df$Column1), ]

數據框的合并與拆分

# 列拼接
combined_df <- cbind(df1, df2)# 行拼接
combined_df <- rbind(df1, df2)# 根據標志進行列合并
merged_df <- merge(df1, df2, by = "ID")

數據框的計算與匯總

# 計算某列的均值
mean_value <- mean(df$Column1)# 分類匯總
summary_stats <- aggregate(df$Column1, by = list(df$Column2), mean)

數據框的篩選

# 條件篩選
subset_df <- subset(df, Column1 > 2)

處理缺失值

# 檢查缺失值情況
missing_values <- is.na(df)# 刪除含有缺失值的觀測
df_no_missing <- na.omit(df)# 用指定數值填補缺失值
df$Column1[is.na(df$Column1)] <- 0

應用函數處理數據

使用 apply() 函數對數據框中的數據進行批量處理

# 使用 apply 函數計算某幾列的均值
mean_values <- apply(df[, c("Column1", "Column2")], MARGIN = 2, mean)

重塑數據框

通過 reshape2 包中的函數如 melt() 和 dcast() 可以進行數據框的重塑操作,從長格式(long
format)到寬格式(wide format)的轉換

library(reshape2)# 將數據框從寬格式變為長格式
melted_df <- melt(df, id.vars = c("ID", "Date"))# 將數據框從長格式變為寬格式
casted_df <- dcast(melted_df, ID ~ variable, value.var = "value")

使用 dplyr 進行數據框的管道操作

dplyr 包提供了一組功能強大的函數,用于數據框的快速操作,如選擇、過濾、排序、匯總和變異等

library(dplyr)# 選擇和篩選
selected_df <- df %>%select(Column1, Column2) %>%filter(Column1 > 2)# 分組和匯總
summary_df <- df %>%group_by(Column2) %>%summarize(mean_value = mean(Column1))

數據框的時間序列操作

對于時間序列數據,可以使用 zoo 或 xts 包來擴展數據框以支持時間索引和時間序列操作

library(zoo)# 創建時間序列數據框
dates <- as.Date(c("2023-01-01", "2023-01-02", "2023-01-03"))
ts_data <- zoo(df[, "Column1"], order.by = dates)

大數據框的處理

對于大數據集,可以使用 data.table 包來進行快速的數據框操作,特別是對于大量數據的高效處理和計算

library(data.table)# 將數據框轉換為 data.table
dt <- as.data.table(df)# 使用 data.table 的快速操作
result <- dt[Column1 > 2, .(mean_value = mean(Column2)), by = Column3]

數據框的繪圖

可使用 ggplot2 包將數據框中的數據可視化,創建高質量的統計圖形

library(ggplot2)# 創建散點圖
ggplot(df, aes(x = Column1, y = Column2)) +geom_point() +labs(title = "Scatter Plot", x = "Column1", y = "Column2")

數據框的文本處理

使用 stringr 或 tm 包進行數據框中文本數據的處理,如正則表達式匹配、文本清洗和詞頻統計等

library(stringr)# 使用 stringr 包處理文本列
df$TextColumn_cleaned <- str_replace_all(df$TextColumn, "[^[:alnum:][:space:]]", "")

數據框的連接與關聯

按行或列連接數據框

# 按行連接(合并)
combined_rows <- rbind(df1, df2)# 按列連接(合并)
combined_columns <- cbind(df1, df2)

按鍵值關聯數據框

# 根據共同的列(鍵)進行合并
merged_df <- merge(df1, df2, by = "key_column")# 使用 dplyr 包進行關聯(左連接示例)
library(dplyr)
merged_df <- left_join(df1, df2, by = "key_column")

數據框的條件處理與邏輯操作

條件篩選

# 根據條件篩選數據
subset_df <- subset(df, Column1 > 2 & Column2 == "A")# 使用 dplyr 進行篩選
filtered_df <- df %>%filter(Column1 > 2, Column2 == "A")

邏輯操作

# 創建邏輯向量
logic_vector <- df$Column1 > 2# 使用邏輯向量選擇數據
selected_df <- df[logic_vector, ]

數據框的匯總與統計分析

分組匯總

# 按照列進行分組,并計算每組的均值
summary_stats <- aggregate(df$Value, by = list(df$Category), FUN = mean)# 使用 dplyr 進行分組和匯總
summary_df <- df %>%group_by(Category) %>%summarize(mean_value = mean(Value))

統計計算

# 計算某列的均值
mean_value <- mean(df$Value)# 計算標準差
std_deviation <- sd(df$Value)# 計算頻數統計
freq_table <- table(df$Category)

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

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

相關文章

使用 WebSocket 進行實時數據傳輸

以下是使用 WebSocket 進行實時數據傳輸的一般步驟&#xff1a; 一、前端部分 &#xff08;一&#xff09;創建 WebSocket 連接 const socket new WebSocket(ws://your-server-url); 在上述代碼中&#xff0c;將 ws://your-server-url 替換為您實際的服務器 WebSocket 地…

SvANet:微小醫學目標分割網絡,增強早期疾病檢測

SvANet&#xff1a;微小醫學目標分割網絡&#xff0c;增強早期疾病檢測 提出背景前人工作醫學對象分割微小醫學對象分割注意力機制 SvANet 結構圖SvANet 解法拆解解法邏輯鏈 論文&#xff1a;SvANet: A Scale-variant Attention-based Network for Small Medical Object Segmen…

【JAVA poi-tl-ext 富文本轉word】

富文本轉word 環境使用poi-tl-ext的原因富文本轉word代碼 環境 jdk 1.8 <dependency><groupId>io.github.draco1023</groupId><artifactId>poi-tl-ext</artifactId><version>0.4.16</version> </dependency>poi-tl-ext已經包…

可靈重大升級!新增Web端上線、首尾幀控制、單次生成視頻時長增加至10s!

快手視頻生成大模型“可靈”&#xff08;Kling&#xff09;&#xff0c;作為全球首個真正用戶可用的視頻生成大模型&#xff0c;自面世以來&#xff0c;憑借其無與倫比的視頻生成效果&#xff0c;在全球范圍內贏得了用戶的熱烈追捧與高度評價。截至目前&#xff0c;申請體驗其內…

修正版頭像上傳組件

修正版頭像上傳組件 文章說明核心源碼展示運行效果展示源碼下載 文章說明 在頭像剪切上傳一文中&#xff0c;我采用div做裁剪效果&#xff0c;感覺會有一些小問題&#xff0c;在昨天基于canvas繪制的功能中改進了一版&#xff0c;讓代碼變得更簡潔&#xff0c;而且通用性相對高…

永恒之藍:一場網絡風暴的啟示

引言 在網絡安全的漫長歷史中&#xff0c;“永恒之藍”&#xff08;EternalBlue&#xff09;是一個不可忽視的里程碑事件。它不僅揭示了網絡世界的脆弱性&#xff0c;還促使全球范圍內對網絡安全的重視達到了前所未有的高度。本文將深入探討“永恒之藍”漏洞的起源、影響及其對…

【WebGIS】從設計層面設計系統

本項目在通過現代信息技術手段&#xff0c;對古村古鎮進行多方位、多角度的數字化記錄、展示與傳播&#xff0c;實現文化遺產的數字化保護、活化利用與共享。項目內容主要包括&#xff1a;1&#xff09;古村古鎮數據庫的建立&#xff1a;通過多種渠道收集古村古鎮的各類信息&am…

期貨量化交易客戶端開源教學第八節——TCP通信服務類

private FReciveStr: AnsiString; {接收到的數據} IsConErr: Boolean; {網絡連接是否失敗} FSocket_LB: Integer; {TCP連接類別,0為交易,1為行情,2為查詢} FRetryCount: Integer; {網絡連接重試次數} FLoginErrEvent: TLoginErrEvent; {…

如何從 PDF 中刪除背景

您是否曾經收到過充滿分散注意力背景的掃描 PDF 文檔&#xff1f;也許是帶有繁忙水印的舊收據或背景光線不均勻的掃描文檔。雖然這些背景可能看起來沒什么大不了的&#xff0c;但它們會使您的工作空間變得混亂&#xff0c;并使您難以專注于重要信息。輕松刪除這些不需要的元素并…

短視頻SEO矩陣系統:源碼開發與部署全攻略

在數字化時代&#xff0c;短視頻已成為人們獲取信息、娛樂休閑的重要方式。隨著短視頻平臺的興起&#xff0c;如何讓自己的內容在眾多視頻中脫穎而出&#xff0c;成為每個創作者和內容運營者關注的焦點。本文將為您深入解析短視頻SEO矩陣系統的源碼開發與部署&#xff0c;助您在…

MT6825磁編碼IC在智能雙旋機器人中的應用

MT6825磁編碼IC在智能雙旋機器人中的應用&#xff0c;無疑為這一領域的創新和發展注入了新的活力。作為一款高性能的磁性位置傳感器&#xff0c;MT6825以其獨特的優勢&#xff0c;在智能雙旋機器人的運動控制、定位精度以及系統穩定性等方面發揮了關鍵作用。 www.abitions.com …

django ninja get not allowed 能用 put delete

遇到一個奇怪的問題&#xff0c;django-ninja 編寫的 get post 方法不能使用 # 獲取Material router.get(/material, responseList[MaterialSchemaOut]) paginate(MyPagination) def list_material(request, filters: Filters Query(...)):qs retrieve(request, Material, f…

Midjourney v6.5 可能會在“7月底”發布,并改進了真實感和皮膚紋理

Midjourney v6.5即將發布&#xff0c;這一更新將大幅提升圖像的真實感和皮膚紋理&#xff0c;為用戶帶來更逼真的視覺體驗。首席執行官David Holz在電話會議中宣布&#xff0c;新版本將提高圖像清晰度&#xff0c;特別是在手部和皮膚細節上&#xff0c;同時改進Web應用程序和個…

ABAP調用BAPI時COMMIT WORK AND WAIT未按照預期同步提交問題分析

背景&#xff1a; 在做ABAP開發時&#xff0c;經常會有連續調用BAPI的需求&#xff0c;比如先創建銷售訂單&#xff0c;再依據銷售訂單創建交貨單&#xff0c;再對交貨單進行過賬等類似的一連串調用&#xff0c;這種類似的場景往往需要前一步操作的數據完全寫入數據庫才能進行…

編譯打包自己的云手機(redroid)鏡像

前言 香橙派上跑云手機可以看之前的文章&#xff1a; 香橙派5plus上跑云手機方案一 redroid(帶硬件加速)香橙派5plus上跑云手機方案二 waydroid 還有一個cuttlefish方案沒說&#xff0c;后面再研究&#xff0c;cuttlefish的優勢在于可以自定義內核且selinux是開啟的&#xf…

vue3下載base64文件

如果后端明確告訴你返回的是base64&#xff0c;那請求頭就不用帶responseType: “blob”,和普通的接口一樣發送就行 await materialsFile({ id: proxy.$route.query.id }).then((res) > {if (res) {// atob先解碼base64數據const raw window.atob(res.data);// 獲取解碼后…

vscode 遠程開發

目錄 vscode 遠程連接 選擇 Python 環境 vscode 遠程連接 按 CtrlShiftP 打開命令面板。輸入并選擇 Remote-SSH: Open SSH Configuration File...。選擇 ~/.ssh/config 文件&#xff08;如果有多個選項&#xff09;。在打開的文件中添加或修改你的 SSH 配置。 這個可以右鍵…

Jupyter Notebook基礎:用IPython實現動態編程

Jupyter Notebook基礎&#xff1a;用IPython實現動態編程 1. 引言 Jupyter Notebook是一個基于Web的交互式計算環境&#xff0c;允許用戶創建和共享包含實時代碼、方程式、可視化和文本敘述的文檔。它廣泛應用于數據清洗與轉換、數值模擬、統計建模、機器學習以及其他數據科學…

開放開源開先河(一)

2022年7月28日&#xff0c;以“軟件定義世界 開源共筑未來”為主題的全球數字經濟大會開放原子開源峰會在北京開幕&#xff0c;承辦主峰會和為捐贈人進行授牌儀式的開放原子開源基金會再次進入公眾視野。基金會秘書長孫文龍從匯聚全球產業鏈開源力量、核心鏈接能力、開發者分享…

Aop切面編程(2)--代理模式

1、代理模式的理解&#xff1a;不修改A對象的代碼的基礎上&#xff0c;對A代碼塊進行拓展。通過創建ProxyA代理對象&#xff0c;拓展A對象并調用A對象的核心功能&#xff1b; 即&#xff1a;不修改對象的源碼基礎上&#xff0c;創建代理對象&#xff0c;進行功能的附加和增強&…