这样,您就正式进入 R 语言的世界了。或许您有 STATA 或 SAS 方面的背景,或许您精通 Python。或者,您可能是一位 Excel 专家。无论您拥有何种背景,在深入使用 R 编程语言之前,都应该对它有所了解。本文将重点介绍您在开始使用 R 语言之前应该了解的 7 件事,并帮助您避免新 R 语言用户会遇到的一些最常见问题。
在深入分析我们的技巧之前,让我们快速定义一下 R。R 是一种编程语言,通常用于统计计算和图形领域。但是,用户创建的大量包将 R 的适用性扩展到了数据分析和可视化之外的领域。
1.为此问题有一个适用包
最初,为看似无法使用基础 R 包解决的问题,您可能忍不住拼凑出一些解决方案。这是一个糟糕的想法,原因有很多,首要原因是,或许有一个包可用于简化您的解决方案并确保它没有错误。您需要了解并使用您的 R 包,R 包的大部分都存储在 Comprehensive R Network (CRAN) 中。
清单 1 中的代码创建了两个将在回归函数中使用的数据矢量(第 3-5 行)。该数据的设计将 X 和 Y 关联起来,但也存在。第 7 行中的代码展示了异方差性是如何产生的。Y(已与 X 相关)有一个通过 X 创建的随机成份。异方差性不会妨碍您估算一次回归的能力。但是,各个系数的标准误差被认为是不可靠的,因此回归值只是估算值,而不是实际计算的值。然后,我们可以运行回归,查看来自 summary 函数的标准误差(错误的标准误差)。
#Dataframes df <- data.frame(Bool = sample(c(TRUE,FALSE),100,replace=T),Int = c(1:100),String=sample(LETTERS,100,replace=TRUE)) df$Bool [1] FALSE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE TRUE TRUE TRUE FALSE TRUE [23] FALSE TRUE FALSE FALSE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE TRUE TRUE [45] FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE FALSE [67] TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE [89] TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE df[df$Bool,] Bool Int String 2 TRUE 2 Z 3 TRUE 3 R 5 TRUE 5 K 6 TRUE 6 T 10 TRUE 10 O 11 TRUE 11 U 13 TRUE 13 Y 14 TRUE 14 Z 16 TRUE 16 N df[df$Bool,3] [1] Z R K T O U Y Z N H D L B H N L D Z R M I W W I M D A C B R S M Y Y F V B W P Q Q S M Y K Z J V I Levels: A B C D E F H I J K L M N O P Q R S T U V W X Y Z df$String[df$Bool] [1] Z R K T O U Y Z N H D L B H N L D Z R M I W W I M D A C B R S M Y Y F V B W P Q Q S M Y K Z J V I Levels: A B C D E F H I J K L M N O P Q R S T U V W X Y Z df$NewVar <- c(1:101) Error in `$<-.data.frame`(`*tmp*`, "NewVar", value = 1:101) : replacement has 101 rows, data has 100 df$NewVar <- c(1:99) Error in `$<-.data.frame`(`*tmp*`, "NewVar", value = 1:99) : replacement has 99 rows, data has 100
vars <- apply(df2,2,var) vars A B C D E F 831.8953 810.2209 806.5781 854.8382 820.8769 866.8276
Show moreShow more icon
如果您想知道数据帧中每个变量的方差,只需指定该数据帧、索引(在本例中,“2”表示列)和该函数。输出结果表明,您现在拥有每列的方差。如果您想成为高效的 R 用户,了解 apply 和它的相关函数就非常重要。
5.基础图形很棒,ggplot2 也很棒
R 使用基础包创建了非常有用的图形,但在掌握 ggplot2 之后,您的图形才会真正引人注目。让我们看看使用基础图形和 ggplot2 的一些示例。
清单 10 中的脚本生成了图 4 和图 5 所示的图像。
清单 10. 一个基础包结果与 ggplot2 结果
1 2 3 4 5 6 7 8 9 10 11 12 13
library(ggplot2) data(list=esoph) barplot(xtabs(esoph$ncases~esoph$tobg+esoph$alcgp),beside=TRUE,col=rainbow(4) , main="Number of Cancer cases by Alcohol and Tobacco Use Groups",xlab="Alcohol Use Group",ylab="Cases") legend("topright",legend=levels(esoph$tobgp),fill=rainbow(4),title="Tobacco Use Group") ggplot(esoph,aes(x=alcgp,y=ncases,fill=tobgp))+ geom_bar(position="dodge",stat="identity")+ labs(fill="Tobacco Use Group",x="Acohol Use Group",y="Cases",title="Number of Cancer cases by Alcohol and Tobacco Use Groups")
EUst <- EuStockMarkets plot(EUst[,1],ylab="Euros",main="German and Swiss Stock Time Series Comparison") lines(EUst[,2],col="Blue") legend("topleft",legend=c("German","Swiss"),col=c("Black","Blue"),lty=1) df <- data.frame(Year = as.double(time(EUst)),German= as.double(EUst[,1]),Swiss = as.double(EUst[,2])) ggplot(df,aes(x=Year))+ geom_line(aes(y=df$Swiss,col="Swiss"))+ geom_line(aes(y=df$German,col="German"))+ labs(color="",y="Euros",title="German and Swiss Stock Time Series Comparison")
Show moreShow more icon
图 6. 使用基础包的德国和瑞士股票
图 7. 使用 ggplot2 的德国和瑞士股票
使用基础图形没什么不好,它们比一些与 R 类似的语言创建的图形还要好,但 ggplot2 版本更美观一些。此外,使用 ggplot2 创建图形所采用的方式比使用基础包创建图形更直观。
Reprint policy:
All articles in this blog are used except for special statements
CC BY 4.0
reprint policy. If reproduced, please indicate source
John Doe
!