R Markdown Workshop

R Markdown Workshop

背景

这对我来说是一个不寻常的帖子,我之前试图避开写关于R Markdown的文章,因为这个主题已经有很多资源可用(例如RMarkdown, RMarkdown, RMarkdown)。 然而,最近我为社会问题研究中心的同事们开了一个关于使用RMarkdown的会议。这样做的目的是证明R Markdown的有用性(并希望转换为少数人)。 在本次会议中,我创建了一组资源,旨在使从SPSS到R Markdown的过渡更加容易。 这些资源的统计内容主要是教授心理学本科生的一些较简单的标准测试。

OSF上的此项目页面上提供了完整的资源。该练习的主要目的是为人们提供使用此R Markdown模板创建此pdf的工具。 我希望通过使用这个模板,SPSS用户可以转型成为R和R Markdown(在精彩的papaja包Aust(2017)的帮助下)。
R Markdown基础知识
我从研讨会开始,介绍了一些R Markdown的基础知识。使用R Markdown时,有三种类型的文本需要关注。
纯文本:这是您用来撰写稿件的内容。这个纯文本的格式是相当直接的(见这个备忘单
代码块:这些在顶部和底部用三个后面的刻度表示```,在标题中用大括号括起来的命令(与第一组后面刻度相同的行)。代码块允许您在不离开文档的情况下运行分析。可以在主输出文档中包含或省略代码块的输出。
单行代码:这由一个单一的反冒号表示,以开始一段代码。单个反冒号关闭这段代码。例如
每次打开一段代码(一个块或内联代码)时,您必须确定要编码的语言。这可以通过在大括号中包含字母“r”或在后面打开后立即打勾来完成。
与R合作
为了展示R的一些基本功能,我使用R中内置的数据集进行了一些分析。这意味着任何人都应该能够重现使用我提供的模板进行的分析(无需担心加载来自其他文件的数据)。我还提供了另一个带有附带模板的文档,详细说明了将数据输入到R中的步骤。但是这个过程更容易出错,如果你不熟悉R,它可能有点不直观。

使用数据框

数据框的结构与SPSS文件非常相似。有行和列,列是命名的,通常表示变量。行(也可以命名)通常表示案例。您可以使用不同的名称加载多个数据框,尽管它们通常保存为df(并且这些数据可以编号为df1 df2 df3。如果您的文档/代码组织良好,那么您可以使用数据框的通用名称这意味着您的大部分代码都可以被重复使用(特别是如果变量名称相同 - 如果您重复进行研究,或只进行微小的更改,您会发现代码有很大重复使用的余地 – 对于代码块和单行代码都是如此)

一些基础知识:
可以通过运行数据框的名称将整个数据框打印到命令行
美元符号可用于从数据框调用特定变量,即df $ variable_name
函数具有“函数名称”形式,后跟括号:function_name()
要运行该函数的对象位于括号中。例如,如果我们的数据框被称为df,而年龄被称为年龄,我们想要得到平均年龄,我们将运行平均值(df $ age)。
有时由NA表示的缺失数据可能会混淆某些函数,为此,在函数中包含参数na.rm = TRUE是有帮助的,例如,mean(df $ age,na.rm = TRUE)
mtcars数据集附带R.有关它的信息,只需键入help(mtcars)。这里感兴趣的变量是am(传输; 0 =自动,1 =手动)mpg(每加仑英里数)qsec(1/4英里时间)。下面我们练习一些简单的函数来查找有关数据集的信息。
示例代码和输出:
使用命令df < - mtcarsmtcars数据集加载到名为df的对象中
通过运行variable.names(df)查看与df关联的变量名称

[1] mpg cyl disp hp drat wt qsec vs am gear

[11]``carb

每加仑的平均英里数可以用平均值计算(df $ mpg)

[1] 20.09062

使用sd(df $ mpg)计算同一变量的标准差

[1] 6.026948

或者,如果您想查看基本描述,请使用descriptives(df $ mpg)

mean sd min max len

1 20.09062 6.026948 10.4 33.9 32

要通过变量进行索引,我们使用方括号[]which()函数。
以下命令获取所有带手动变速器的汽车的每加仑平均英里数:mean(df$mpg[which(df$am==1)])

## [1] 24.39231

统计检验

现在我们已经了解了一些基础知识,我们将尝试运行一些统计检验。

t检验

我将使用mtcars数据集来说明如何运行和编写t检验,其方式如下:

报告值中没有复制/粘贴错误;你可以直接使用代码和文本。
除了mpg(每加仑英里数),我感兴趣的另一个变量是am(传输; 0 =自动,1 =手动).

我要研究的问题是:

根据传输情况,每加仑英里数有差异吗?
T检验:传输和MPG
使用·df < - mtcars·加载·mtcars·并将其保存在您的环境中
使用以下命令创建一个具有通用名称的新数据框,例如赋值x:x < - df
这个命令运行t-test,你可以在控制台t.test中看到输出(x $ mpg~x $ am

## 
##  Welch Two Sample t-test
## 
## data:  x$mpg by x$am
## t = -3.7671, df = 18.332, p-value = 0.001374
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -11.280194  -3.209684
## sample estimates:
## mean in group 0 mean in group 1 
##        17.14737        24.39231

以下代码运行t-test但将输出保存为列表t,方便以后调用:t < - t.test(x $ mpg~x $ am)

与数据框一样,可以使用美元符号调用列表中的特定变量
要调用p值,只需键入t $ p.value

## [1] 0.001373638
要调用t统计量,请键入t $ statistic
## t
## -3.767123
并调用自由度,键入t $parameter
## df
## 18.33225
最后,计算效果大小并将其保存到对象类型td < - cohensD(mpg~am,data = x)
从上面得知,我们可以使用单行代码调用我们需要的每个值来编写我们的结果部分,如下所示

这是您的Rmd文档中的段落的写法 :

An independent samples t-test revealed a significant difference in miles per gallon between cars with automatic transmission
(*M* = `r mean(x$mpg[which(x$am==0)])`, *SD* = `r sd(x$mpg[which(x$am==0)])`), and cars with manual transmission, (*M* = `r mean(x$mpg[which(x$am==1)])`, *SD* = `r sd(x$mpg[which(x$am==1)])`), *t*(`r t$parameter`) = `r t$statistic`, *p* `r paste(p_report(t$p.value))`, *d* = `r td.

上面的语法将返回以下内容:

An independent samples t-test revealed a significant difference in miles per gallon between cars with automatic transmission (M = 17.15, SD = 3.83), and cars with manual transmission, (M = 24.39, SD = 3.83), t(18.33) = -3.767, p = .001, d = 1.48.

如果您想稍后在文档中运行另一个t检验,只需在代码块中运行它并创建与以前名称相同的新对象(t和td),您可以使用与上面相同的写入来报告它。

卡方

为了说明卡方检验,我将测试发动机类型与(0 = V-shaped, 1 = straight)和传动类型(0 = automatic, 1 = manual)之间是否存在关联。这也是为了说明code/write up - 而不是真正的检验。

首先使用命令表创建一个表(x $ am,x $ vs)
使用chisq.test(table(x $ am,x $ vs))运行卡方检验返回:

## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(x$am, x$vs)
## X-squared = 0.34754, df = 1, p-value = 0.5555

与t检验一样,为了使用单行代码报告,您需要将检验保存为对象,例如, 使用c < - chisq.test(table(x am,x vs))
使用 w <- sqrt(cstatistic/(length(xmpg)*cparameter))保存效果大小) 并 计算观察到的检验效能 pw <- pwr.chisq.test(w=w,N=length(xmpg),df=(c$parameter),sig.level = .05)
使用以下报告

A chi-squared test for independence revealed no significant association between engine type and transmission type, χ^2^(`r c$parameter`, *N* = `r length(x$mpg)`) = `r c$statistic`, *p* `r paste(p_report(t$p.value))`, *V* = `r w, the observed power was `r pw$power`.

以上返回以下内容:

A chi-squared test for independence revealed no significant association between engine type and transmission type, χ<sup>2</sup>(1, *N* = 32) = 0.348, *p* = .556 *V* = 0.1, the observed power was 0.09. 

(see this resource for effect size calculations for chi-squared tests).

ANOVA方差分析和相关性检验

有关ANOVA的详细信息,请使用OSF页面上的 R Markdown template
模板查看 pdf

再次使用mtcars数据集,我将创建几个表。请记住,这些表的代码被设计为与papaja包一起使用并呈现为pdf,因此这篇文章中的html表格的格式不正确(请参考OSF上的资源)看看它应该是什么样的)。

首先使用x < - mtcars将mtcars保存为对象
我们将使用表格(x $ vs,x $ gear)制作一个包含发动机类型 (V-shaped vs Straight)与 表齿轮数(3,4或5)两个变量的表,返回:

##
## 3 4 5
## 0 12 2 4
## 1 3 10 1

这个表对我们很有用,但它并不适合我们的文档
我们可以使用apa_tab解决这个问题

在使用这个函数之前,我们需要使用命令test < - as.data.frame.matrix(table(x $ vs,x $ gear))创建一个可以通过函数传递的矩阵。
我们可以使用test <-rownames < - (test,c(“V-shaped”,“Straight”))为行命名
我们可以使用test <-colnames < - (test,c(“3 gear”,“4 gear”,“5 gear”))为列命名
最后,我们通过apa_table()函数传递我们的对象(矩阵)测试,以呈现将嵌入到我们的文档中的表
下面的代码将生成表1:

apa_table(
   test
   , align = c("l", "c", "c", "c")
   , caption = "Engine type and number of gears"
   , added_stub_head = "Engine Type"
   #, col_spanners = makespanners()
   
)

Table 1:
Engine type and number of gears
ENGINE TYPE 3 GEARS 4 GEARS 5 GEARS
V-shaped 12 2 4
Straight 3 10 1
有关更复杂的表和示例图,请参阅OSF页面上pdf and R Markdown template
的相关部分。

使用引文

可以使用citr来引用,就像使用Word使用endnote一样。我已将Zotero库(使用BetterBibTex)导出到我正在工作的目录中的.bib“My Library.bib”文件中。引用我只是使用@和引文键,例如@ haidt_emotional_2001返回Haidt(2001)。要将整个引文括在括号中,使用方括号[@ haidt_emotional_2001]给出:(Haidt 2001)。完整参考将自动添加到参考列表中(参见下文)。

引用您在分析中使用的R和R软件包通常也是一种好习惯。在目前的帖子中,我使用了R(版本3.6.1; R核心团队2017)和R-packages blogdown(版本0.12;谢,希尔和托马斯2017),bookdown(版本0.10;谢2016),citr(版本0.3) .0; Aust 2016),desnum(版本0.1.1; McHugh 2017),extrafont(版本0.17; Chang 2014),ggplot2(版本3.2.0; Wickham 2009),knitr(版本1.23; Xie 2015),lsr(版本0.5; Navarro 2015),MASS(版本7.3.51.4; Venables和Ripley 2002),papaja(版本0.1.0.9842; Aust和Barth 2017),pwr(版本1.2.2; Champely 2018)和scale(版本1.0.0) ;威克姆2016)。

References

Aust, Frederik. 2016. Citr: ’RStudio’ Add-in to Insert Markdown Citations. https://CRAN.R-project.org/package=citr.

———. 2017. “Papaja (Preparing APA Journal Articles) Is an R Package That Provides Document Formats and Helper Functions to Produce Complete APA Manscripts from RMarkdown-Files (PDF and Word Documents).” https://github.com/crsh/papaja.

Aust, Frederik, and Marius Barth. 2017. Papaja: Create APA Manuscripts with R Markdown. https://github.com/crsh/papaja.

Champely, Stephane. 2018. Pwr: Basic Functions for Power Analysis. https://CRAN.R-project.org/package=pwr.

Chang, Winston. 2014. Extrafont: Tools for Using Fonts. https://CRAN.R-project.org/package=extrafont.

Haidt, Jonathan. 2001. “The Emotional Dog and Its Rational Tail: A Social Intuitionist Approach to Moral Judgment.” Psychological Review 108 (4): 814–34. https://doi.org/10.1037/0033-295X.108.4.814.

McHugh, Cillian. 2017. “Desnum: Creates Some Useful Functions.” https://github.com/cillianmiltown/R_desnum.

Navarro, Daniel. 2015. Learning Statistics with R: A Tutorial for Psychology Students and Other Beginners. (Version 0.5). Adelaide, Australia. http://ua.edu.au/ccs/teaching/lsr.

R Core Team. 2017. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.

Venables, W. N., and B. D. Ripley. 2002. Modern Applied Statistics with S. Fourth. New York: Springer. http://www.stats.ox.ac.uk/pub/MASS4.

Wickham, Hadley. 2009. Ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York. http://ggplot2.org.

———. 2016. Scales: Scale Functions for Visualization. https://CRAN.R-project.org/package=scales.

Xie, Yihui. 2015. Dynamic Documents with R and Knitr. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. http://yihui.name/knitr/.

———. 2016. Bookdown: Authoring Books and Technical Documents with R Markdown. Boca Raton, Florida: Chapman; Hall/CRC. https://github.com/rstudio/bookdown.

Xie, Yihui, Alison Presmanes Hill, and Amber Thomas. 2017. Blogdown: Creating Websites with R Markdown. Boca Raton, Florida: Chapman; Hall/CRC. https://github.com/rstudio/blogdown.
这篇文章的目的是帮助使这些资源更容易获取。 因此,这篇文章与OSF上的资源之间可能会有很多重复

斜体是通过在你想要斜体的文本的任一侧放置一个星形来实现的斜体 =斜体; 通过在您希望斜体的文本的任意一侧放置一个双星粗体 =粗体来实现粗体

来自desnum包↩

此测试以及随后的所有测试仅用于说明目的,我没有检查任何假设以确定我是否可以运行测试,我只想提供可用于您自己的分析的示例代码。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 高阶函数 review 1.匿名函数函数名 = lambda 参数列表:返回值 def 函数名(参数列表):ret...
    漫磋嗟阅读 212评论 0 0
  • 线程同步 ▪ 同步问题的提出 现实生活中,我们会遇到“同一个资源,多个人都想使用”的问题。 比如:教室里,只有一台...
    小破孩_e9ce阅读 364评论 0 0
  • 1.环境搭建 anaconda环境配置 当人们使用Python等软件时,需要使用IDE(集成开发环境),在环境中编...
    棒棒糖117阅读 168评论 0 0
  • 她坐在商场的角落里,看人来人往。 以往不论做什么,看书,看电影,散步,上课,发呆…… 都会不可控地想到他。 然而此...
    林陌Lynne阅读 169评论 9 0
  • 拆页四 先说事实还是先说观点 摘自《博韦商务沟通》,270页 【R阅读原文片段】 为了拿出有说服力的分析性报告,...
    媛子_6e9c阅读 223评论 6 1