R语言入门学习笔记3——对结构性数据(表格)的处理(一):处理格式

0. 开篇

这一系列是我学习R基础的笔记,它的特点是容易查找,当然也不太严谨。如果是想快速上手,或者喜欢通过多试代码而不是阅读的朋友,可以参考我的笔记。

3. 对结构性数据(表格)的处理(一): 处理格式

这一篇介绍关于结构性数据(表格)在R中的基本导入、改写、导出等。

3.1 导入

这里我们讲的是表格数据的导入,一般是csv和xlsx文件的导入,能用的方法其实是多样的,我就用最基础的为例。我下面用到的素材:
关于好莱坞最赚钱的故事的csv文件:
https://public.tableau.com/s/sites/default/files/media/HollywoodsMostProfitableStories.csv
关于Pokemon 索引的xlsx文件:
https://public.tableau.com/s/sites/default/files/media/Resources/pokemon.xlsx

3.1.1 csv文件的导入

movies <- read.csv("C:/Users/Rony/Downloads/HollywoodsMostProfitableStories.csv",
                   header = T,
                   stringsAsFactors = F)

3.1.2 xlsx文件的导入

install.packages("readxl")
library(readxl)
pkm <- read_excel("C:/Users/Rony/Downloads/pokemon.xlsx",
                  sheet = "Pokemon")

3.2 格式调整

3.2.1 金钱

在movies当中列"Worldwide.Gross"是总利润,我们想给这一数据加上$或者¥的单位,这里需要用到scales的包:

install.packages("scales")
library(scales)
dollar(movies$Worldwide.Gross)
dollar(movies$Worldwide.Gross,prefix = "¥")

3.2.2 时间

为此,我找了带有时间的数据,关于edX.org 2012-2013 学年,下载链接如下:
https://public.tableau.com/s/sites/default/files/media/EdX_2013 Academic Year Courses.csv
利用as.Date()会默认将日期格式转换为"%Y-%m-%d"的格式

edX <- read.csv("C:/Users/Rony/Downloads/EdX_2013 Academic Year Courses.csv",
                header = T,
                stringsAsFactors = F)
# 告诉R尝试将表里的现有数据识别为"%Y-%m-%d",或"%d/%m/%Y"
edX$start_time_DI <- as.Date(edX$start_time_DI,
        tryFormats = c("%Y-%m-%d", "%d/%m/%Y"))
edX$last_event_DI <- as.Date(edX$last_event_DI,
        tryFormats = c("%d/%m/%Y"))
# 可以尝试两个日期相减,可以发现得到天数
edX$last_event_DI - edX$start_time_DI

当我们不用了解那么详细的日期,也许我们只关心事件发生在某年某月,甚至在哪一年:

# 当我们只关心日期在几年几月或者哪一年
format(edX$start_time_DI,"%Y-%m")
format(edX$start_time_DI,"%Y")

3.2.3 大小写

有的时候我们也许需要把一列中的字母全部变为大写或小写:

# 改为大写以及改为小写
toupper(movies$Lead.Studio)
tolower(movies$Lead.Studio)

许多时候我们也需要把所有单词的首字母改为大写,这里提供最简单快捷的方法就是使用stringr包里的str_to_title函数:

install.packages("stringr")
library(stringr)
str_to_title(movies$Lead.Studio)

当然感兴趣的话也可以自己编写一个函数解决。

3.3 排序、取极值

3.3.1 order的使用

在第一篇笔记中也提过:

order(movies$Worldwide.Gross,decreasing = T)
movies[order(movies$Worldwide.Gross,decreasing = T),"Worldwide.Gross"]

3.3.2 which的使用

帮你找出符合对应条件的行的位置

# 得到是满足条件的行的行数组成的向量
which(movies$Genre == "Comedy")
# 最大的那一行的行数
which.max(movies$Worldwide.Gross)

3.4 导出

我们通常将R当中的导出为csv格式,十分直接的:

write.csv(movies,"movies_output.csv",row.names = FALSE)

这样文件就会导出到你的默认文件夹,顺便提一下,不知道默认文件夹可以通过以下方式查找并修改:

# 查找
getwd()
# 修改
setwd("C:/.../...")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值