一、讀取dataframe
在r語言中,讀取數據最常用的函數是read.csv和read.table。這兩個函數都可以讀取csv和txt兩種格式的文件,將數據讀入到r語言中,存儲為dataframe類型。下面是一個簡單的讀取csv文件的例子:
data <- read.csv("example.csv")
二、查看dataframe
在讀取數據之後,我們通常需要查看一下數據的基本情況,包括緯度、變數類型、缺失值等等。
1. 緯度
通過dim函數可以查看數據的緯度,即行數和列數:
dim(data)
2. 變數類型
可以通過str函數查看數據框中每個變數的類型、名稱、第一個觀測值;
str(data)
如果要查看數據框中某個變數的類型,可以使用class函數:
class(data$Column1)
3. 缺失值
我們需要查看一下數據框中是否存在缺失值,可以使用sum和is.na函數來查看:
sum(is.na(data)) # 總缺失值數
sum(is.na(data$Column1)) # Column1列的缺失值數
三、將數據框轉為數值型
通常,我們在處理數據時需要將數據框中的某些列轉為數值型,以便進行數值計算。下面介紹一些方法:
1. as.numeric()
as.numeric()函數可以將一個向量或者數據框的某一列轉為數值型。
data$Column1_numeric <- as.numeric(data$Column1)
需要注意的是,如果在數據框中存在非數值類型的缺失值(例如字元型”NA”),使用as.numeric()函數轉換會返回NA:
example_vec <- c(1, 2, 3, "NA", 4, 5)
as.numeric(example_vec) # 將返回有關警告和NA
為了解決這個問題,可以先將NA替換成0,再將vector轉為數值型:
example_vec[example_vec == "NA"] <- "0"
example_vec <- as.numeric(example_vec)
2. sapply()
sapply函數可以在數據框中批量進行列的轉換,例如將所有列都轉為數值型:
df_num <- sapply(data, as.numeric)
需要注意的是,如果數據框中某些列是非數值型的,會存在警告信息,但不會影響轉換結果。
3. apply()
apply函數可以對數據框的某行或某列進行操作。對於轉換數據類型的需求,可以使用apply函數,比如將整個數據框轉為數值型(注意,在含有缺失值的列中,apply函數默認將缺失值視為最小值,可能會影響結果):
data_num <- apply(data, 2, as.numeric)
四、刪除dataframe中的空值、重複項
1. 刪除空值
對於含有缺失值的數據框,可以使用na.omit()函數刪除含有缺失值的行:
data_clean <- na.omit(data)
如果只要刪除某列含有缺失值的行,可以這樣做:
data_clean <- data[-which(is.na(data$Column1)),]
其中[-which(is.na(data$Column1)),]表示刪除data中Column1列中含有NA的行。
2. 刪除重複項
可以使用unique()函數刪除所有列都完全相同的重複行:
data_unique <- unique(data)
如果只想針對某一列來刪除重複項,可以使用duplicated()函數:
data_dump <- data[!duplicated(data$Column1),]
五、數據reshape
reshape是一個重要的數據處理步驟,它可以將數據從一種形式轉換為另一種形式。
1. reshape()
reshape函數可以將數據從長格式轉換成寬格式(或者從寬格式轉換成長格式)。下面是一個從長格式轉換為寬格式的例子:
library(reshape2)
data_new <- reshape(data, idvar = "Column1", timevar = "Column2", direction = "wide")
其中,idvar參數指定變數名或者下標,默認將不作處理; timevar參數指定需要轉換的變數名或者下標,direction參數指示需要轉換方向。
2. melt()
melt函數可以將數據從寬格式轉換成長格式。下面是一個從寬格式轉換為長格式的例子:
data_melt <- melt(data_new, id.vars = "Column1", variable.name = "month", value.name = "num")
其中,id.vars參數指定需要保留的變數或下標,variable.name和value.name是新列的列名。
原創文章,作者:WTRDD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/332782.html