2.4 矩陣matrix · 2.5 資料框data.frame · 2.6 資料表data.table ... 如大學中有大學生、碩士班學生與博士班學生三種類別的學生,使用方法為 factor(資料向量,levels= ... ... <看更多>
Search
Search
2.4 矩陣matrix · 2.5 資料框data.frame · 2.6 資料表data.table ... 如大學中有大學生、碩士班學生與博士班學生三種類別的學生,使用方法為 factor(資料向量,levels= ... ... <看更多>
2.4 矩陣matrix · 2.5 資料框data.frame · 2.6 資料表data.table ... 如大學中有大學生、碩士班學生與博士班學生三種類別的學生,使用方法為 factor(資料向量,levels= ...
#2. R 列表變數與Data Frames - 頁5,共5
data frame 的索引使用方式有許多種,向量和矩陣所使用的四種索引(正 ... 若要計算列的總和與平均,則可使用 rowSums 與 rowMeans 函數,用法都是 ...
#3. 如何掌控資料:資料框的操作技巧(上) - Medium
建立資料框的方式有兩個,一為手動輸入資料,二為載入表格式資料(CSV、TXT 或者試算表)。我們可以分別在Python 與R 語言中利用 pandas.DataFrame() 和 data.frame() ...
#4. 認識R 的美好
我們可以運用 data.frame() 函數手動創造資料框,讓我們建立一個很簡單的資料框叫做 great_nba_teams ,這個資料框有隊名、勝場數、敗場數、是否獲得總冠軍與球季:.
#5. 13 数据框| R语言教程
data.frame() 函数会将字符型列转换成因子, 加选项 stringsAsFactors=FALSE 可以避免这样的转换。 如果数据框的某一列为常数, 可以在 data.frame() 调用中仅给该列赋一个 ...
Data Frames | 数据框. data.frame()函数创建数据框,紧密耦合的变量集合,这些变量共享了矩阵和列表的许多属性,它们被大多数R的建模软件用作基本的 ...
#7. R语言中as()函数与as.data.frame()、as.array()等有什么区别?
as()函数比as.data.frame()、as.array()等函数广泛,更具有强制性。一、 as()函数:强制给对象到定类。如关联规则(arules)类型、智能 ...
而在R語言的資料型態,常用的有這些:. integer; number; logic; character; factor; vector; list; matrix; data frame.
#9. R 数据框 - 菜鸟教程
R 数据框数据框(Data frame)可以理解成我们常说的“表格”。 数据框是R 语言的数据结构,是特殊的二维列表。 数据框每一列都有一个唯一的列名,长度都是相等的, ...
#10. 資料框架· R Basic
資料框架. 利用data.frame 建立資料框架. 資料框架類似資料表,常當作大量資料集,例如:匯入外部檔或讀取資料庫資料等。 > name <- c("Joe", "Bob", "Vicky") > age ...
#11. R数据处理|data.table篇(一) - 知乎专栏
由于data.table的语法主要基于[],有些用法和基础函数会不一致,所以没有放在前面两个 ... 首先数据框的类型要转换为data.table,否则使用的就是data.frame的[]功能 ...
#12. R语言Data Frame数据框常用操作- 深蓝 - 博客园
Data Frame 一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的。
#13. R教學第6章:簡單的資料分析
完成這章教學後,你就可以任意使用這份資料,計算每個變數的最大值、最小值等統計數字,並且找到自己需要的列和欄了。下一篇教學,我們會繼續介紹更多data frame的使用方法 ...
#14. R 資料結構筆記 - 龍崗山上的倉鼠
前一章R 基本程式筆記 在前面我們有介紹向量(vector),此章我們還要介紹幾項常見"資料結構". data.frame - 資料框(資料框架); List - 列表 ...
#15. R語言rev()用法及代碼示例- 純淨天空
數據對象可以定義為向量、按列和按行的DataFrame 等。 用法: rev(x). 參數: x:數據對象. 返回:傳遞的數據對象的反轉. 範例1:. # R program to reverse a vector ...
#16. 数据框(data.frame)
数据框可以用data.frame()函数生成,其用法与list()函数相同,各自变量变成数据框 ... 后一语句将在当前工作空间建立一个新变量r,它不会自动进入数据框d,要把新变量 ...
#17. R commands(11.09.13) 指令用法簡介
data.frame(). 建立資料框架變數. ○ 時間數列變數 ts(x,start,end,frequency). 建立時間數列變數. ○ 與變數有關的工具函數 attr(物件,"屬性名稱").
#18. 02-RDataEngineer-05-Data-Manipulation
filter 的目的是用來做列方向的過濾,所以經過 filter 處理後,資料的個數( nrow )會下降。 filter 函數的用法為,第一個參數放我們要處理的data.frame,後面接著 ...
#19. r语言data.frame用法
Data Frame 一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名, ...
#20. R語言資料集合並、資料增減、不等長合併
... student1<-data.frame(ID,name) student2<-data.frame(ID,score) ... merge的all用法 ... 關於do.call其他用法(R語言 函式do.call()使用).
#21. R语言data.frame用法R语言data.frame()命令的使用教程_IT技术
想了解R语言data.frame()命令的使用教程的相关内容吗,红金龙-时光在本文为您仔细讲解R语言data.frame用法的相关知识和一些Code实例,欢迎阅读和指正 ...
#22. 利用data.frame優化恩君的交友平台 - iT 邦幫忙
[Data Science系列]利用R語言處理更多資料-利用data.frame優化恩君的交友 ... 換句話說,可以把data.frame當成matrix和list之間它們有很多觀念都很 ...
#23. R 軟體入門 - 臺北醫學大學數據處統計中心
的差別。以下我們就來看看幾種變數型態的介紹和範例:. ## R 軟體變數種類: 向量(vector), 矩陣(matrix), 陣列(array),. 1. ## 因子(factor), 資料框架(data-frame), ...
#24. r语言data.frame用法 - 程序员ITS304
R 语言里面的data.frame就是数据库里面的table,R语言的分析,建模大部分都是基于data.frame数据结构,由rows和columns组成。data.frame每一个column会存储同样的数据 ...
#25. 輸入與輸出資料之基本方法2: Basic Importing and Exporting Data
陣(matrix), 陣列(array), 列表(Lists), 或資料框架(data frames) 等. 簡單的資料, 可以直接在R. 視窗中輸入, 大型資料, 通常先以資料庫軟體, ...
#26. R package: dplyr 無痛分析dataframe - 我們的基因體時代Our ...
隨者使用tidyverse的包越來越多,會發現Hadley Wickham有一套很棒的計畫在逐漸把R原生的"較不直覺的"語法改進。 以下分別示範在dplyr中這幾個用法:.
#27. R tutorial - Amazon AWS
在R 中,每一樣變數或函數,都叫做物件,這物件主要包含了「vector」、「matrix」、「data frame」和「list」,而這些物件主要都是資料處理時會遇到的 ...
#28. 「R」apply,lapply,sapply用法探索- 云+社区 - 腾讯云
下面计算一个稍微复杂点的例子,按行循环,让数据框的x1列加1,并计算出x1,x2列的均值。 # 生成data.frame > x <- cbind(x1 = 3, x2 = c(4:1, 2:5)); ...
#29. 資料科學家的pandas 實戰手冊:掌握40 個實用 ... - LeeMeng
pandas 是Python 的一個資料分析函式庫,提供如DataFrame 等十分容易操作 ... 每個人都會預期它是一個DataFrame,不論是Python 或是R 語言的使用者。
#30. R程式語言的基礎: 物件 - 吳漢銘
collections of vectors, matrices, data frames and functions. ▫. When an object is created (for example with the assignment <-), R must allocate.
#31. R语言_data.frame()函数用法 - 代码先锋网
R 语言_data.frame()函数用法,代码先锋网,一个为软件开发程序员提供代码片段和技术文章聚合的网站。
#32. R語言基礎
R 裡面所有的東西都是一個object ** ... 向量的指標用法 ... age<-c(20,27,28,29) nsysu2<-data.frame(major,age) ...
#33. [資料科學] R語言初學雜筆 - 沒一村
data frame 和matrix最大的不同是,每一行都可以有不同的資料型態。然後我們也可以用names()來給他起名字。data frame的底層其實是用很多的list構成 ...
#34. R 語言的Dataframe常用操作- 碼上快樂
首先,數據框的創建函數為data.frame( ),參考R語言的幫助文檔,我們來了解一下data.frame( )的具體用法:. Usage data.frame(..., row.names = NULL, ...
#35. 為欄位重新命名| R - DataCamp
Here is an example of 為欄位重新命名: R 語言可以使用names() 函數將資料框的「變數名稱」以向量的型態輸出: names(df) 透過指定索引值就可以對欄位重新命名: ...
#36. 找r table用法相關社群貼文資訊
將x 轉成r×c 矩陣,(byrow=T)以列排序names(). 查詢或建立向量的元素名稱. ○ 陣列變數.。 2 R 資料結構| 資料科學與R語言。 data.table是data.frame資料框型別的 ...
#37. 資料組合 - HackMD
在R 裡頭內建的 merge() 就是一種join 的方式(即inner join),另外還有left join 以及right join 等,其示意圖如圖一,假設有兩個data.frame df1 及df2,如果join 的方式要 ...
#38. 輕鬆學習R語言學習筆記
AND(&)、OR(|)的用法與Python等其它程式語言皆相同: > ... greatMlbTeams <- data.frame(teamName, wins, losses, isChampion, season) > ...
#39. R 語言學習筆記(一) : 基本語法與向量 - 小狐狸事務所
Taipei, data.frame 等, 許多內建函數也採用點式風格, 例如is.integer() ... 其中第二種方式是R 語言建議的用法, 而"=" 則不建議使用, 因為等號賦值只 ...
#40. r语言data frame
r 语言data frame,R语言data.frame与tibble的异同点? - 知乎,# data[data =='dm'] <- 'dataming'这个容易出错,一般用于处理非factor列,比如此处dm是在postion列, ...
#41. r ? <- $ () [] {} [[ @ :: 常用特殊運算子(operators)
二維資料如matrix, data.frame 使用[列, 行] 方式取出資料或是取出直行欄位資料. # 讀取iris第1至4欄資料 iris[1:4]. {}大括號. {}大括號用於標註 ...
#42. R 合併重複名稱的列,加總各欄位值教學 - Office 指南
介紹如何使用R 的 dplyr 套件,將data frame 重複的名稱的列合併,加總各欄位值。 假設我們有一張data frame 表格,資料如下:. # 原始資料 df <- data.frame( x ...
#43. 資料處理-實用的10個小技巧| Data Processing Basics FAQ
本篇整理了使用R語言進行資料處理(Data Processing) 的Top 10 FAQ,為了節省健忘 ... 包括資料欄位重新命名、產生隨機亂數、產生data frame、數值區隔 ...
#44. R | Calculate row means, SD and SE - science circle
明明有Excel 可用為什麼偏要用R? ... Use data.frame() function to create a data frame ... filter() 的用法請看這篇:R | Data manipulation
#45. R語言入門之data.frame------數據框的使用 - 每日頭條
第四行代碼表示每位患者就診時疾病的名稱,最後一行代碼data.frame用來將 ... 和前面的matrix用法相同,nrow顯示數據框的行數,ncol顯示列數,dim顯示 ...
#46. R 統計軟體-- 語法與函數 - 陳鍾誠的網站
data.frame(v=1:4,ch=c("a","B","c","d"),n=10);. list(…) 建立串列, list(a=c(1,2),b="hi",c= ...
#47. R语言data.frame用法R语言data.frame()命令的使用教程
想了解R语言data.frame()命令的使用教程的相关内容吗,红金龙-时光在本文为您仔细讲解R语言data.frame用法的相关知识和一些Code实例,欢迎阅读和指正 ...
#48. R語言中eval和do.call的用法 - 台部落
eval()函數的用法此函數可以接受一個字符串str作爲參數,並把此str當做 ... do.call(what, args, quote = FALSE, envir = parent.frame()) 參數:.
#49. R语言基本操作函数(1)变量的基本操作- 日记 - 豆瓣
R 语言基本操作函数(1)变量的基本操作1.变量变换as.array(x),as.data.frame(x),as.numeric(x),as.logical(x),as.complex(x),as.character(x),.
#50. 新发现的R 里关于data.table 的一些神奇用法 - xzy's blog
R 语言中的 data.table 包可以理解为 data.frame 的高级版本,它比较适合适合用来处理大型数据集。 载入包并且读取一些数据,当然也可以使用 nrow ...
#51. r subset用法
R 語言中的subset()應用也可以使用select參數選擇指定的列以上是subset函數在結合data.frame進行條件篩選時的常見用法subset函數還可以用在向量上,其實這從上面的用法 ...
#52. R常见问题解答153 分钟学会
本文档的目的是为具有一定统计(数学)背景的R 软件初学者提供一个快速 ... data frame(数据框)可以理解是一个松散的数据集。 ... 美)环境用法。
#53. R的package安裝及基本操作
()內為所屬package名. 描述此function的功能. 使用語法. 參數用法 ... 前面的步驟準備好了,R就有分析microarray data 的基. 本功能. 2. 以下會介紹一些基本的運算子, ...
#54. 如何使用pandas 的apply?Dataframe 加入新Column?Python ...
個人比較喜歡這個用法。我們加入lambda r 的語法,直接在apply,而不是BMI_2 指定哪個列(column)是Weight 和Height。 這個方法的 ...
#55. 关于dataframe:plyr ddply并总结在R中的用法 - 码农家园
plyr ddply and summarise use in R嗨,我想避免使用循环,所以想使用plyr的东西来帮助解决我的问题。我想创建一个函数,以从数据帧中为每个因子获取 ...
#56. r subset用法完整相關資訊 - 萌寵公園
R 语言中subset()函数使用- 何帅- 博客园2017年5月3日· R语言中的subset()应用也可以使用select参数选择指定的列以上是subset函数在结合data.frame进行条件筛选时的 ...
#57. R语言从入门到精通:Day3
关于函数matrix()的详细用法,大家可以在Rstudio里面输入?matrix ... R语言中数据框(data.frame)作为一种相比于矩阵、数组更一般的数据类型,将成为 ...
#58. r rep用法完整相關資訊 - 媽媽最愛你
二維. 矩陣( matrix); 資料框(data.frame). 多維. 陣列(array); 清單(list) ...R語言中因子的創建與使用- 每日頭條2018年8月28日· 在R語言中 ...
#59. My R Learning Note 我的R語言學習筆記
updating log: 2015/10/5 新增R Data Frame用法及特性. tricks 一些眉眉角角. 當在使用data frame 時, character 變數會 ...
#60. R数据框用法详解- R编程 - srcmini
本文概述如何创建数据框获取R数据框的结构从数据框提取数据修改数据框数据框 ... Creating the data frame. emp.data<- data.frame( employee_id = c ...
#61. R 自學指引資料處理命令簡介與操作– 第8 頁 - Router.HK Pilot
根據資料物件的不同它有三種用法,分別應用於資料框架data.frame、公式formula 和時間序列ts。以下以mtcars 資料集為例,然後使用aggregate 命令,按cyl ...
#62. R語言資料視覺化技巧-facet-多類別資料分析 - 叡揚資訊
常見的工具如python的numpy+pandas,data本身型態就是iterable的在R裡面資料結構本身就是向量化操作dataframe,讓你看不到for這個字.
#63. R语言数据科学新类型tibble | 粉丝日志
tibble包,也是由Hadley开发的R包。 tibble对data.frame做了重新的设定:. tibble,不关心输入类型,可存储任意类型,包括list类型 ...
#64. r table 排序科學網—R語言中對表格和數組進行排序 - Kmgrkz
table用法subset用法r選取資料r過濾r表格r用法r排序dataframe運算data r sorting dataframe r-faq 如何按值對字典進行排序? 在JavaScript中按字符串屬性值排序對像數組 ...
#65. [R] R 資料匯出csv檔 - 逗滾仔的部落格
write.table(DATA1,file="D:\\Pixnet Blog\\Test\\DATA.csv",sep=",",row.names=F, na = "NA"). *DATA1當然就是你要匯出的資料集名稱嚕!
#66. R系列之apply函数家族
lapply 函数是一个最基础循环操作函数之一,用来对 list 、 data.frame 、 vector 数据集进行循环,并返回和 X 长度同样的 list 结构作为结果 ...
#67. data.frame()函数用法_r语言data函数怎么用 - 名欧网
Data Frames | 数据框. data.frame()函数创建数据框,紧密耦合的变量集合,这些变量共享了矩阵和列表的许多属性,它们被大多数R的建模软件用作基本的 ...
#68. [筆記] pandas 用法(1) 基本功能indexing 設值 - 陳雲濤的部落格
#coding=utf-8 import numpy as np import pandas as pd # 宣告data frame df=pd.DataFrame(np.random.randn(6,4), index=dates, columns=['a','b','c','d']) ...
#69. R语言中数据对象之数据框的使用 - 翔宇亭IT乐园
在R语言中,数据框(Dataframe)是一个非常重要的数据结构,其组织数据的结构与矩阵相似,但是其各列的数据类型可以不相同。一般情况,数据框的每列是 ...
#70. R語言︱list用法、批量讀取、寫出數據時的用法 - 开发者知识库
本文转载自 sinat_26917383 查看原文 2016-04-11 8315 数据/ 用法/ r语言/ LIS/ 批量读取/ rlist/ 读 ... data.frame(unlist(Job_Pwordseg.ct[1])) #跟list一樣的結果
#71. R學習筆記:資料清理Cleaning Data (2)
R 資料變項基本型態如同上一篇提到的,我們常用class()來檢視欄位的資料型態,下列是R的幾 ... as.data.fram():可以將table形式的data轉回data frame.
#72. [R] Data Frame 資料集合併(merge, join) | Mao's notes.
[R] Data Frame 資料集合併(merge, join). 資料集的合併常用的大致為Inner Join、Full Join、Left Join、Right Join。
#73. R语言中lapply()和sapply()的用法
R 语言中提供了一系列*apply()的函数,为数据分析 ... 的使用class()查看flags类型的时候,R返回flags的类型为data frame,data frame实际上是一个存储 ...
#74. [心得] 資料整理套件介紹-第二章dplyr(上) - 看板R_Language
再介紹一些這些函數的其他用法` R dt = data.table(V1 = rpois(20, 3), ... 增併rownames為變數如標題所示,直接看範例` R dat = data.frame(A = 1:5, ...
#75. pandas.DataFrame.merge — pandas 1.3.4 documentation
Merge DataFrame or named Series objects with a database-style join. A named Series object is treated as a DataFrame with a single named column. The join is done ...
#76. data frame資料框-資料科學與R語言 - YouTube
#77. [Pandas教學]資料分析必懂的Pandas DataFrame處理雙維度 ...
相較於Pandas Series處理單維度或單一欄位的資料,Pandas DataFrame則可以處理雙維度 ... DataFrame的基本用法,進而有能力應用在實務的資料分析上。
#78. Pandas resample ohlc
DataFrame. DaraFrame resample OHLC based on a non-time value. , converting secondly data into 5-minutely data). pandas. Thanks in advance for your time!
#79. tkinter — Python interface to Tcl/Tk — Python 3.10.0 ...
The following line creates a frame widget, which in this case will ... or 16 bit "#RRRRGGGGBBBB" ranges, where R,G,B here represent any legal hex digit.
#80. Promise - JavaScript - MDN Web Docs
postMessage.bind( frames[0], "some data", "*"); // bound is a built-in function -- there is no user // code on the stack, so which realm do ...
#81. 在R 中建立大型資料框 - Delft Stack
本文演示瞭如何在R 中建立大型資料框. ... 我們使用 data.frame 函式從向量和因子構建一個資料框物件。 R. rCopy v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, ...
#82. Pandas DataFrame用法|Python Pandas中的「雙維度資料 ...
學完了Pandas Series以後,接著是學習Pandas套件中的第二種資料型態「DataFrame」,有點類似於Execl的表格概念,能同時儲存[欄]和[列]的資料。這邊是Pandas DataFrame ...
#83. pandas 读写sql数据库_mb5fe94c9f04536的技术博客
pandas 读写sql数据库,如何从数据库中读取数据到DataFrame中? ... pandas 选取数据iloc和loc的用法不太一样,iloc是根据索引, loc是根据行的数值.
#84. Ant Design - The world's second most popular React UI ...
An enterprise-class UI design language and React UI library with a set of high-quality React components, one of best React UI library for enterprises.
#85. C uthash example - Peace Together Project
Copy the example data in the following table, and paste it in cell A1 of a new ... GitHub. t头文件来实现hash表简单好用的哈希表C开源hash代码uthash的用法 ...
#86. C uthash example - Expertech
Ruby Tags. t头文件来实现hash表简单好用的哈希表C开源hash代码uthash的用法 ... Copy the example data in the following table, and paste it in cell A1 of a new ...
#87. Ckdtree vs kdtree
In particular, KDTree helps organize and partition the data points based ... Are you running an old version of R? No, this was done with R 3. stimmen . lib.
#88. 职场的摸爬滚打...记录10 个Python 自动化办公案例,效率提高 ...
... open(path,encoding="utf-8") data = f.read() f.close() return data ... 提取电话号码使用正则,在此不过多说明正则的使用用法;使用正则我们 ...
#89. Smote in r dmwr2
用法 : SMOTE(form, data, perc. Fall fall on the floor letra Canciones con fall fall on the floor por letras todas las canciones de fall fall on the floor.
#90. Ransac homography python - Sameer Patar
In addition, even if this assumption doesn't hold for a data set, RANSAC would make no ... 您也可以進一步了解該方法所在類cv2 的用法示例。
#91. Ssd resnet 50 v1 fpn 640x640
22 thg 7, 2021 Updated the performance data of U50, ZCU102, ... targets on extremely high frame rate), RetinaNet outperforms SSD, DSSD, R-FCN and FPN.
#92. Pandoc table width
Minimal example Sep 26, 2021 · Title An R 'Pandoc' Writer Type Package Encoding UTF-8 ... 文中总结了一些模板变量的用法和注意事项, 最后以转换demo.
#93. Ue4 serialize tmap
Data Tables are stored as binary How do I serialize objects that contain ... 2564 UE4 내에다음구조의중첩된json이있습니다. similar Press Windows + R, ...
#94. [原]数据科学教程:R语言与DataFrame[2016版]
没错,DataFrame就是类似于Excel表格和MySQL数据库一样是一个结构化的数据体。而这种结构化的数据体是当代数据流编程中的中流砥柱,几乎所有先进算法 ...
#95. Samsung Ks0108
The user must initialize the appropriate SPI module before using the SPI Glcd Library. 求proteus中液晶LM3228的用法,有C程序就更好了,谢谢!. It has 8 data lines ...
#96. Gbff to gtf
The main data content is carried by a list of gff_element objects and a ... 的一款读取gff文件的工具,可以实现gff文件转换为gtf文件,用法如下.
data.frame r用法 在 [心得] 資料整理套件介紹-第二章dplyr(上) - 看板R_Language 的推薦與評價
這章重點放在dplyr
plyr與dplyr有不少函數是重疊的
不過都會以dplyr為主
plyr跟dplyr有一些名字不同,但功能相似的函數
我會一併介紹
先列一下這章要介紹的函數 (沒標註的就是來自dplyr)
A. 基本整理的函數:arragnge, filter, mutate, select, group_by, summarise, n
B. 增併rownames為變數:add_rownames, plyr:::name_rows
C. list to data.frame:as_data_frame
D. by var 合併函數:join, plyr:::join, data.table:::merge, base:::merge
E. col/row 合併函數:bind_rows, data.table:::rbindlist, bind_cols
F. 取唯一列:distinct, data.table:::unique
G. 列行運算:rowwise, plyr:::colwise
H. 值映射(對應修改):plyr:::mapvalues, plyr:::revalue
I. 其他函數:summarise_each, mutate_each
J. 特殊函數:plyr:::here
1. 基本整理函數
arrange: 根據你選定的變數做排列 (可以是多個變數)
filter: 根據你設定的條件做row 篩選(or selection)
mutate: 根據你給定的值賦予新變數,或是變更舊變數
select: 根據給定的變數名稱做選擇,也可以做刪除變數
group_by: 根據給定變數做group,以銜接summarise
summarise: 資料整併
n: 計算資料個數
用一個簡單例子來展示用法:
` R
set.seed(100)
(dt = data.table(V1 = rpois(5, 3),
V2 = sample(c("g1", "g2"), 5, 1), V3 = rnorm(5)))
# V1 V2 V3
# 1: 2 g1 0.3186301
# 2: 2 g2 -0.5817907
# 3: 3 g1 0.7145327
# 4: 1 g2 -0.8252594
# 5: 3 g1 -0.3598621
dt %>% arrange(V1, V2, V3)
# V1 V2 V3
# 1: 1 g2 -0.8252594
# 2: 2 g1 0.3186301
# 3: 2 g2 -0.5817907
# 4: 3 g1 -0.3598621
# 5: 3 g1 0.7145327
dt %>% filter(V1 <= 2, V3 < 0)
# V1 V2 V3
# 1: 2 g2 -0.5817907
# 2: 1 g2 -0.8252594
dt %>% mutate(V5 = V1 * V3, V6 = substr(V2, 2, 2),
V7 = round(V3), V8 = 1L, V3 = V3 **2)
# V1 V2 V3 V5 V6 V7 V8
# 1: 2 g1 0.1015251 0.6372602 1 0 1
# 2: 2 g2 0.3384804 -1.1635814 2 -1 1
# 3: 3 g1 0.5105570 2.1435981 1 1 1
# 4: 1 g2 0.6810531 -0.8252594 2 -1 1
# 5: 3 g1 0.1295008 -1.0795864 1 0 1
dt %>% select(V1, V2)
# V1 V2
# 1: 2 g1
# 2: 2 g2
# 3: 3 g1
# 4: 1 g2
# 5: 3 g1
dt %>% group_by(V2) %>% summarise(size_g = n(), m_V3 = mean(V3),
s_V1 = sum(V1))
# V2 size_g m_V3 s_V1
# 1 g1 3 0.2244336 8
# 2 g2 2 -0.7035251 3
`
上面的例子是一些簡單運用的範例
先介紹一下tbl_df, tbl_dt的class
tbl_df跟tbl_dt只會列出一部分的資料
做操作時比較不會因為太多資料的輸出造成當機
要更改列出的資料量,可以這樣做
` R
set.seed(100)
(dt = data.table(V1 = rpois(50, 3), V2 = sample(c("g1", "g2"), 50, 1),
V3 = rnorm(50))) %>% tbl_dt(FALSE)
# V1 V2 V3
# 1 2 g1 -0.4470622
# 2 2 g1 -1.7385979
# 3 3 g1 0.1788648
# 4 1 g1 1.8974657
# 5 3 g2 -2.2719255
# 6 3 g1 0.9804641
# 7 4 g1 -1.3988256
# 8 2 g1 1.8248724
# 9 3 g2 1.3812987
# 10 1 g1 -0.8388519
# .. .. .. ...
print(dt, n = 5)
# V1 V2 V3
# 1 2 g1 -0.4470622
# 2 2 g1 -1.7385979
# 3 3 g1 0.1788648
# 4 1 g1 1.8974657
# 5 3 g2 -2.2719255
# .. .. .. ...
`
再介紹一些這些函數的其他用法
` R
dt = data.table(V1 = rpois(20, 3), V2 = sample(c("g1", "g2"), 20, 1),
V3 = rnorm(20), V4 = rgamma(20, 5, 3))
# 你可以直接用一個你想要使用的變數放入,不須先立變數
dt %>% arrange(V1*V3, V3)
dt %>% filter(abs(V1*V3) > 1)
# desc是dplyr的函數提供反向排列
dt %>% arrange(V1)
dt %>% arrange(desc(V1))
# 兩種做變數刪除的方式 (我偏好第二種)
dt %>% mutate(V4 = NULL)
dt %>% select(-V4)
# select 還有提供各種特別函數於select中使用
dt %>% select(starts_with("V"))
dt %>% select(ends_with("1"))
dt %>% select(contains("2"))
dt %>% select(matches("\\w\\d"))
dt %>% select(num_range("V", 1:2))
`
2. 增併rownames為變數
如標題所示,直接看範例
` R
dat = data.frame(A = 1:5, row.names = paste0("City_", LETTERS[1:5]))
dat %>% name_rows
dat %>% add_rownames
dat %>% add_rownames("city") # add_rownames可以改成你要的名稱
`
3. list to data.frame
as_data_frame提供比as.data.frame有效率的轉換方法
我之前也沒用過,不過看到manual寫到這個函數,就忍不住想分享一下
不過這個函數強迫list的element要有name,使用上要注意一下
` R
library(microbenchmark)
dat_list = lapply(rep(1e6, 200), rnorm)
names(dat_list) <- paste0("A", 1:200)
microbenchmark(
as_data_frame(dat_list),
as.data.frame(dat_list)
)
#Unit: milliseconds
# expr min lq mean median uq
# as_data_frame(dat_list) 1.22642 1.281156 1.418296 1.311944 1.339027
# as.data.frame(dat_list) 19.83196 20.199147 21.397833 20.350524 21.143335
# expr max neval
# as_data_frame(dat_list) 6.957693 100
# as.data.frame(dat_list) 33.307182 100
`
看起來是沒差很多啦(汗顏,可能資料不夠大
4. by var 合併函數
先介紹base的merge,這個函數是用來合併兩個data.frame
除了input的兩個data.frame,還有其他五個input (其他input之後再提)
a. by - 合併根據的變數
b. by.x - 合併根據的變數 於第一個data.frame的名稱
c. by.y - 合併根據的變數 於第二個data.frame的名稱
d. all.x - 是否保留來自第一個data.frame的values
e. all.y - 是否保留來自第一個data.frame的values
註:還有一個input是 all 可以一次控制all.x跟all.y
我用簡單的範例去介紹這幾個選項
` R
## 產生資料
set.seed(75)
(x = data.frame(cat1 = sample(c("A", "B", NA), 5, 1),
cat2 = sample(c(1, 2, NA), 5, 1), v = rpois(5, 3),
stringsAsFactors = FALSE))
# cat1 cat2 v
# 1 A 1 4
# 2 A 2 3
# 3 <NA> NA 4
# 4 B NA 4
# 5 A 1 4
(y = data.frame(cat1 = sample(c("A", "B", NA), 5, 1),
cat2 = sample(c(1, 2, NA), 5, 1), v = rpois(5, 3),
stringsAsFactors = FALSE))
# cat1 cat2 v
# 1 A 2 1
# 2 A 1 8
# 3 <NA> NA 2
# 4 B 2 5
# 5 <NA> 1 3
## 兩個data.frame的資料都不保留 (預設值)
merge(x, y, by = c("cat1","cat2"), all.x = FALSE, all.y = FALSE)
# cat1 cat2 v.x v.y
# 1 A 1 4 8
# 2 A 1 4 8
# 3 A 2 3 1
# 4 <NA> NA 4 2
## 保留第一個data.frame的全部資料
merge(x, y, by = c("cat1","cat2"), all.x = TRUE, all.y = FALSE)
# cat1 cat2 v.x v.y
# 1 A 1 4 8
# 2 A 1 4 8
# 3 A 2 3 1
# 4 B NA 4 NA
# 5 <NA> NA 4 2
## 保留第二個data.frame的全部資料
merge(x, y, by = c("cat1","cat2"), all.x = FALSE, all.y = TRUE)
# cat1 cat2 v.x v.y
# 1 A 1 4 8
# 2 A 1 4 8
# 3 A 2 3 1
# 4 B 2 NA 5
# 5 <NA> 1 NA 3
# 6 <NA> NA 4 2
## 保留兩個data.frame全部的資料
merge(x, y, by = c("cat1","cat2"), all.x = TRUE, all.y = TRUE)
# cat1 cat2 v.x v.y
# 1 A 1 4 8
# 2 A 1 4 8
# 3 A 2 3 1
# 4 B 2 NA 5
# 5 B NA 4 NA
# 6 <NA> 1 NA 3
# 7 <NA> NA 4 2
`
all.x跟all.y這四種組合分別對應到dplyr的四種join
a. inner_join - merge(..., all.x = FALSE, all.y = FALSE)
b. left_join - merge(..., all.x = TRUE , all.y = FALSE)
c. right_join - merge(..., all.x = FASLE, all.y = TRUE)
d. full_join - merge(..., all.x = TRUE , all.y = TRUE)
但是merge跟dplyr的join還是有些微不同
dplyr的join不會去比對by variable都是NA的情況
給一個例子就好
` R
inner_join(x, y, by = c("cat1","cat2"))
# cat1 cat2 v.x v.y
# 1 A 1 4 8
# 2 A 2 3 1
# 3 <NA> NA 4 2
# 4 A 1 4 8
`
PS: If you use dplyr 0.4.1, there is something wrong. You're gonna find the
output do not contain the line: 3 <NA> NA 4 2. Please update your dplyr
to 0.4.2 or higher version.
至於plyr:::join就沒有這個問題
` R
join(x, y, by = c("cat1","cat2"), 'inner')
# cat1 cat2 v v
# 1 A 1 4 8
# 2 A 2 3 1
# 3 <NA> NA 4 2
# 4 A 1 4 8
`
plyr:::join用法其實大同小異,它是用type去控制join方式
最後是data.table:::merge
` R
setDT(x)
setDT(y)
merge(x, y, by = c("cat1","cat2"))
# cat1 cat2 v.x v.y
# 1: NA NA 4 2
# 2: A 1 4 8
# 3: A 1 4 8
# 4: A 2 3 1
`
其實用法跟merge一模一樣,不贅述
介紹完by, all.x, 跟all.y之後,我們來介紹by.x跟by.y
用一個簡單例子:
` R
set.seed(75)
x = data.frame(cat1 = sample(c("A", "B", NA), 5, 1),
cat2 = sample(c(1, 2, NA), 5, 1), v = rpois(5, 3),
stringsAsFactors = FALSE)
y = data.frame(cat3 = sample(c("A", "B", NA), 5, 1),
cat4 = sample(c(1, 2, NA), 5, 1), v = rpois(5, 3),
stringsAsFactors = FALSE)
merge(x, y, by.x = c("cat1","cat2"), by.y = c("cat3","cat4"))
# cat1 cat2 v.x v.y
# 1 A 1 4 8
# 2 A 1 4 8
# 3 A 2 3 1
# 4 <NA> NA 4 2
`
我想這個例子已經很好說明了by.x跟by.y了
接著是再dplyr怎麼做?
` R
inner_join(x, y, by = c("cat1" = "cat3", "cat2" = "cat4"))
# cat1 cat2 v.x v.y
# 1 A 1 4 8
# 2 A 2 3 1
# 3 A 1 4 8
`
至於plyr:::join跟data.table:::merge就沒有支援這種功能了
dplyr還提供兩種join: semi_join跟anti_join
簡單說明一下,semi_join就是只保留第一個data.frame變數的inner_join
anti_join則semi_join沒有配對的組合
這兩個有興趣再去玩玩看,這裡就不提供例子了
最後是一個實際問題
我如果要merge超過三個的df怎麼辦?
可以參考一下 #1LaHm_aH (R_Language)
這裡完整介紹一下使用這幾個套件要怎麼解決
` R
DF_list = replicate(5, data.frame(cat1 = sample(c("A", "B"), 5, 1),
cat2 = sample(c(1, 2), 5, 1), v = rnorm(5)), simplify = FALSE)
# 下列兩種會變成橫表,每一個data.frame的v都會保留
Reduce(function(x, y) merge(x, y, by = c("cat1","cat2"), all=TRUE), DF_list)
Reduce(function(x, y) full_join(x, y, by = c("cat1","cat2")), DF_list)
# 只保留第一個data.frame的值
join_all(DF_list, by = c("cat1","cat2"), type = "full")
# 直表,保留全部的v,等同於全部做rbind
join_all(DF_list, by = c("cat1","cat2", "v"), type = "full")
`
其實這樣每一個方法的結果都會很混亂,非常不建議,除非你知道你目標是什麼
5. col/row 合併函數
bind_rows跟rbindlist其實就是在做 do.call(rbind, .)或是 Reduce(rbind, .)
只是這兩個function更加有效率
如果還不懂do.call(rbind, .)跟Reduce(rbind, .)再做什麼
剛好可以利用這個機會去弄懂他們在幹嘛
` R
DF_list = replicate(5, data.frame(cat1 = sample(c("A", "B"), 5, 1),
cat2 = sample(c(1, 2), 5, 1), v = rnorm(5)), simplify = FALSE)
bind_rows(DF_list)
rbindlist(DF_list)
`
bind_cols等同於 do.call(cbind, .)
`
DT_list = lapply(1:5, function(x) data.table(rnorm(5)) %>%
setnames(paste0("V", x)))
bind_cols(DT_list)
`
還有一半,我們留到下一章再討論。
[關鍵字]: dplyr
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.27.107
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1437545676.A.A4B.html
第三章可能要拖到晚上了,現在有點累
... <看更多>