R語言學習筆記之一 選取子集

2021-07-24 18:45:57 字數 2403 閱讀 2648

在r中取資料集取子集是常用的操作,其使用的方法很零活,但是有些操作規律性不強,容易讓初學者產生一些疑惑,下面我總結了一些選取子集的方法,希望對大家有所幫助(部分**和內容選自《r語言實戰》)

manager <- c(1, 2, 3, 4, 5)

date <- c("10/24/08", "10/28/08", "10/1/08", "10/12/08", "5/1/09")

gender <- c("m", "f", "f", "m", "f")

age <- c(32, 45, 25, 39, 99)

q1 <- c(5, 3, 3, 3, 2)

q2 <- c(4, 5, 5, 3, 2)

q3 <- c(5, 2, 5, 4, 1)

q4 <- c(5, 5, 5, na, 2)

q5 <- c(5, 5, 2, na, 1)

leadership <- data.frame(manager, date, gender, age, q1, q2, q3, q4, q5, stringsasfactors = false)

一、保留法:

1、使用行數、列出取子集

dataframe[row indices,colum indices]

newdata <- leadership[, c(6:10)]

2、通過列名取子集

newdata <- leadership[c("q1", "q2", "q3", "q4", "q5")]                      ##只需要寫列名稱即可,行數取全量的(沒有行row indices,)

3、生成邏輯向量法

newdata <- leadership[which(leadership$gender == "m"  &  leadership$age > 30), ]

(1) 邏輯比較 leadership$gender=="m" 生成了向量 c(true, false, false, true,false) 。

(2) 邏輯比較 leadership$age > 30 生成了向量 c(true, true, false, true, true) 。

(3) 邏輯比較 c(true, false, false, true, true) & c(true, true, false, true,true) 生成了向量 c(true, false, false, true, false) 。

(4) 函式 which() 給出了向量中值為 true 元素的下標。因此, which(c(true, false,false, true, false)) 生成了向量 c(1, 4) 。

(5)  leadership[c(1,4),] 從資料框中選擇了第乙個和第四個觀測。這就滿足了我們的選取準則(30歲以上的男性)。

4、subset() 函式

newdata <- subset(leadership, age >= 35 | age < 24,  select = c(q1, q2, q3, q4))

newdata <- subset(leadership, gender == "m" & age >  25, select = gender:q4)

5、隨機抽樣

leadership 資料集中隨機抽取乙個大小為3的樣本

mysample <- leadership[sample(1:nrow(leadership),3,replace =  f),]

二、丟棄法:

1、使用行數、列出取子集

newdata <- leadership[,-c(1:2)] 

newdata <- leadership[-c(1:2)] 

newdata <- leadership[,-c(7:8)]

newdata <- leadership[c(-7, -8)]

newdata <- leadership[-c(7:8)]

2、生成邏輯向量法

myvars <- names(leadership) %in% c("q3", "q4")    

newdata <- leadership[!myvars]

##names(leadership) %in% c("q3", "q4") 返回了乙個邏輯型向量, names(leadership)

中每個 匹配 q3 或 q4 的元素的值為 true ,反之為 false : c(false, false, false, false,false, false, false, true, true, false) 。

錯誤的方法:

newdata <- leadership[!c("q1", "q2", "q3", "q4", "q5")]      ##裡邊不是邏輯向量

總結:1、可以用行列數取子集(保留法、丟棄法都可以)

2、可以通過列名選取(保留法)

3、通過邏輯向量選擇(保留法,丟棄法)

R語言學習筆記 一

r是用於統計分析 繪圖的語言和操作環境。r是屬於gnu系統的乙個自由 免費 源 開放的軟體,它是乙個用於統計計算和統計製圖的優秀工具。r程式包是多個函式的集合,具有詳細的說明和示例。window下的r程式包是經過編譯的zip包。每個程式包包含r函式 資料 幫助檔案 描述檔案等。r程式包是r功能擴充套...

R語言學習筆記(一)

r語言學習筆記 一 r中的資料 一 r中的常用物件 objects 包括 1 向量 vector 2 因子 factor 是乙個分類變數 3 陣列 array 是乙個k維的資料表,所有的元素必須是同一種型別 4 矩陣 matrix 是陣列的乙個特例,其中k 2 5 資料框 data frame 是由...

R語言學習筆記

1.資料輸入 read.table n fileposition 函式 eg.x read.table c users administrator desktop 1.txt header t 目前只知道可以完好地讀入txt檔案 空格隔開 excel不支援 csv讀入不完全。ps.可以用excel生...