1. R语言数据操作的内容简介
自创立以来,R已经成为统计计算和数据分析的一个优秀软件。该软件的唾手可得以及范围广泛的程序包再加上随时提供支持的R社区,使R成为几乎任何一种和统计相关的计算任务的一个极好选择。然而,很多用户,特别是那些有其它程序语言经验的用户,并没有完全利用R的能力。由于R的特性,在其它程序语言中有用的方法在R中可能效率并不高。菲尔·斯佩克特的《R语言数据操作》展示了一系列将数据读入R并进行高效处理的方法。除了内置的函数,还包括了可以从CRAN(综合R档案网络)下载的大量现成的程序包。展示的所有方法都利用了R的核心特性:对于通常的数据管理任务所提供的向量化运算,高效的下标使用,R函数的正确使用。最有经验的R用户发现,特别是在处理大型数据集时。将R和其它程序结合使用可能会有帮助,尤其是数据库程序。因此,对于在R中使用数据库,以及从电子表格和其它程序创建的数据集中提取数据的方法,这些都有详细的论述。R中虽然有时会忽略字符操作,在这里却作了详细的论述。使得那些传统地使用脚本语言解决的问题完全可以用R解决。对于那些有其它程序语言经验的用户提供了有效使用程序结构——例如循环——的指南。由于许多统计建模和图形函数需要数据框形式的数据,全书自始至终都提供了将普通函数的输出结果转化为数据框的技术。通过使用各种不同的例子(其数据来源于R或者是轻松可得的模拟数据集),《R语言数据操作》可推荐给任何想从运行简单的例子提高到可以对实际的真实数据提供操作解决方案的R使用者。
2. 如何用R读取数据
在R语言里面,有很多读取数据的方法。R能读文本文件,csv格式文件,通过RODBC包读取数据库数据等等。下面我介绍几种最基本的读取数据的方法!
工具/原料
RStudio
方法
不管是读取数据还是写入,R都是在工作路径中完成的。所以首先我们要知道我们的R所在的工作路径是在哪里。使用getwd()函数来获取我们的工作路径。
下面查看工作路径里面有哪些文件,使用dir()函数
如果你所想导入的数据并不在你当前的工作路径中,有两种方法可以解决。第一种就是把数据文件放到工作路径中,第二种方法就是更改工作路径。更改工作路径使用setwd()函数。比如你想要把工作路径设置成桌面
现在我读取我工作路径中,名字为hw1_data.csv的文件。使用read.csv()函数
也可以使用read.table()函数来读取csv格式的文件。由于csv文件的分隔符是“,”所以我们在用read.table()函数的时候,sep参数,我们要设定为sep=“,”
发现read.table()读出来的数据,列名并不是我们文件中的列名,而是V1,V2。。。我们需要加上header这个参数来修改这个问题
另外在read.table()函数族中还有很多参数,对我们读取数据都有帮助,大家可以去了解下。使用?read.table()进行了解
3. R语言基本数据分析
R语言基本数据分析
本文基于R语言进行基本数据统计分析,包括基本作图,线性拟合,逻辑回归,bootstrap采样和Anova方差分析的实现及应用。
不多说,直接上代码,代码中有注释。
1. 基本作图(盒图,qq图)
#basic plot
boxplot(x)
qqplot(x,y)
2. 线性拟合
#linear regression
n = 10
x1 = rnorm(n)#variable 1
x2 = rnorm(n)#variable 2
y = rnorm(n)*3
mod = lm(y~x1+x2)
model.matrix(mod) #erect the matrix of mod
plot(mod) #plot residual and fitted of the solution, Q-Q plot and cook distance
summary(mod) #get the statistic information of the model
hatvalues(mod) #very important, for abnormal sample detection
3. 逻辑回归
#logistic regression
x <- c(0, 1, 2, 3, 4, 5)
y <- c(0, 9, 21, 47, 60, 63) # the number of successes
n <- 70 #the number of trails
z <- n - y #the number of failures
b <- cbind(y, z) # column bind
fitx <- glm(b~x,family = binomial) # a particular type of generalized linear model
print(fitx)
plot(x,y,xlim=c(0,5),ylim=c(0,65)) #plot the points (x,y)
beta0 <- fitx$coef[1]
beta1 <- fitx$coef[2]
fn <- function(x) n*exp(beta0+beta1*x)/(1+exp(beta0+beta1*x))
par(new=T)
curve(fn,0,5,ylim=c(0,60)) # plot the logistic regression curve
3. Bootstrap采样
# bootstrap
# Application: 随机采样,获取最大eigenvalue占所有eigenvalue和之比,并画图显示distribution
dat = matrix(rnorm(100*5),100,5)
no.samples = 200 #sample 200 times
# theta = matrix(rep(0,no.samples*5),no.samples,5)
theta =rep(0,no.samples*5);
for (i in 1:no.samples)
{
j = sample(1:100,100,replace = TRUE)#get 100 samples each time
datrnd = dat[j,]; #select one row each time
lambda = princomp(datrnd)$sdev^2; #get eigenvalues
# theta[i,] = lambda;
theta[i] = lambda[1]/sum(lambda); #plot the ratio of the biggest eigenvalue
}
# hist(theta[1,]) #plot the histogram of the first(biggest) eigenvalue
hist(theta); #plot the percentage distribution of the biggest eigenvalue
sd(theta)#standard deviation of theta
#上面注释掉的语句,可以全部去掉注释并将其下一条语句注释掉,完成画最大eigenvalue分布的功能
4. ANOVA方差分析
#Application:判断一个自变量是否有影响 (假设我们喂3种维他命给3头猪,想看喂维他命有没有用)
#
y = rnorm(9); #weight gain by pig(Yij, i is the treatment, j is the pig_id), 一般由用户自行输入
#y = matrix(c(1,10,1,2,10,2,1,9,1),9,1)
Treatment <- factor(c(1,2,3,1,2,3,1,2,3)) #each {1,2,3} is a group
mod = lm(y~Treatment) #linear regression
print(anova(mod))
#解释:Df(degree of freedom)
#Sum Sq: deviance (within groups, and residuals) 总偏差和
# Mean Sq: variance (within groups, and residuals) 平均方差和
# compare the contribution given by Treatment and Residual
#F value: Mean Sq(Treatment)/Mean Sq(Residuals)
#Pr(>F): p-value. 根据p-value决定是否接受Hypothesis H0:多个样本总体均数相等(检验水准为0.05)
qqnorm(mod$residual) #plot the residual approximated by mod
#如果qqnorm of residual像一条直线,说明residual符合正态分布,也就是说Treatment带来的contribution很小,也就是说Treatment无法带来收益(多喂维他命少喂维他命没区别)
如下面两图分别是
(左)用 y = matrix(c(1,10,1,2,10,2,1,9,1),9,1)和
(右)y = rnorm(9);
的结果。可见如果给定猪吃维他命2后体重特别突出的数据结果后,qq图种residual不在是一条直线,换句话说residual不再符合正态分布,i.e., 维他命对猪的体重有影响。
4. 如何用R读取数据
在R语言里面,有很多读取数据的方法。R能读文本文件,csv格式文件,通过RODBC包读取数据库数据等等。下面我介绍几种最基本的读取数据的方法!
工具/原料
RStudio
方法
不管是读取数据还是写入,R都是在工作路径中完成的。所以首先我们要知道我们的R所在的工作路径是在哪里。使用getwd()函数来获取我们的工作路径。
下面查看工作路径里面有哪些文件,使用dir()函数
如果你所想导入的数据并不在你当前的工作路径中,有两种方法可以解决。第一种就是把数据文件放到工作路径中,第二种方法就是更改工作路径。更改工作路径使用setwd()函数。比如你想要把工作路径设置成桌面
现在我读取我工作路径中,名字为hw1_data.csv的文件。使用read.csv()函数
也可以使用read.table()函数来读取csv格式的文件。由于csv文件的分隔符是“,”所以我们在用read.table()函数的时候,sep参数,我们要设定为sep=“,”
发现read.table()读出来的数据,列名并不是我们文件中的列名,而是V1,V2。。。我们需要加上header这个参数来修改这个问题
另外在read.table()函数族中还有很多参数,对我们读取数据都有帮助,大家可以去了解下。使用?read.table()进行了解
5. R语言数据操作的作者简介
作者:(美)菲尔·斯佩克特 译者:朱钰、柴文义、张颖菲尔·斯佩克特1983年在美国德州农工大学获得统计学博士学位,1987年至今在美国加州大学伯克利分校从事教研工作。现任该校统计系的应用程序管理员,为统计系副教授,主讲统计计算课程。迄今已发表多篇关于统计计算和统计软件的论文,并著有三本书,其中data Manipulation with R已翻译成日文出版。
6. 关于R语言和数据挖掘的
这个问题跟工具无关,而是跟业务专业相关,当然单纯从数据挖掘角度来说,越详细可能会越体现效果,但是我觉得应该从以下方面考虑:
首先是看你们的后期资源和推广能力能否精确到小区进行,比如就算你们通过挖掘发现不同小区之间有差异化特性,那你们后期的营销或推广团队能否有这个力度将其进行小区个性化的产品服务。
其次是从数据挖掘的角度来看,可以精确到小区没问题的,因为本身就是通过数据挖掘系统来进行操作,多一层变量无非是对硬件资源和运行效率多了一些需求,而且数据挖掘之后可能会发现小区这个变量未必会有价值。
7. R语言数据集
1. 向量 Vector 向量是用于储存数值型、字符型或逻辑型数据的一维数组。执行组合功能能的函数 可用来创建向量。
单个向量中的数据必须拥有相同的类型或模式(即数值型、字符型或逻辑型)。同一向量中无法混杂不同模式的数据。
2. 矩阵 Matrix 矩阵是一个二维数组,知识每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通过函数 创建矩阵。
3. 数组 Array 数组与矩阵类似,但是维度可以大于2。数组可通过 函数创建。 数组是矩阵的一个自然推广。它们在编写新的统计方法时很有用。像矩阵一样,数组中的数据也只能拥有一种模式。从数组中选取元素的方法与矩阵相同。
4. 数据框 Data Frame 这是R语言最常用的数据类型。不同的列可以包含不同模式的数据。每一列数据的模式必须相同,且必须等长。数据框可通过函数 创建。
5. 列表 List 列表是一些对象(或成分)的有序集合。列表允许你整合若干(可能无关的)对象到单个对象名下。例如,某个列表中可能是若干向量、矩阵、数据框,甚至其他列表的组合。可以使用函数 创建列表。 许多R的运行结果都是以列表的形式返回的。需要取出其中哪些成分由分析人员决定。
8. 数据挖掘与R语言的介绍
本书利用大量给出必要步骤、代码和数据的具体案例,详细描述了数据挖掘的主要过程和技术,广泛涵盖数据大小、数据类型、分析目标、分析工具等方面的各种具有挑战性的问题。 本书的支持网站给出了案例研究的所有代码、数据集以及R函数包。