问题标签 [tidyverse]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 在模拟中以长或数组格式存储数据
我有一个模拟研究,我最终想绘制使用ggplot2
. 但是,这要求数据是长格式的,我发现在进行自然采用一种因子设计的模拟研究时不太方便。我的问题涉及如何处理这个问题。
这是一个虚拟示例,只是为了说明这一切。假设我们想要比较简单线性回归中斜率的 OLS 估计量,其中包含和不包含用于R
复制的两个样本大小的截距。我们可以使用以下方式存储它:
- 一个
R x 2 x 2
数组 (replications x estimators x sample sizes
) - 带有变量
Replication
、Sample size
和Estimator
的数据框(tibble)Value
这是R中的数组和数据框:
为了用值填充这些,这里是模拟的主体:
现在,tibb
立即准备好用ggplot2
. 但是,正在进行的行选择非常尴尬。另一方面,虽然填充数组感觉自然和直观,但需要更多的工作才能将其转换为适当的绘图格式。
那么我应该如何最好地解决这个问题呢?(还要记住,真实的模拟通常比我在这里使用的有更多的维度。)还有其他更好的方法吗?
r - 将一个数据框中的行(带有行名称)与另一个数据框中的匹配列名称相乘
我有两个数据框:
我希望对 df2 执行逐行操作,将 df2 中的每一列与 df1 中的相应行相乘,然后执行求和。
例如,对于 df2 的第 1 行,我希望计算:
同时排除不匹配的列(df1 中的行)或具有 NA。
我在 df1 中有数千行,在 df2 中有数千行和列。
任何帮助深表感谢!!
PS。我已经在 Perl 中使用哈希实现了这一点,并使用 system() 调用在 Rmarkdown 文档中执行这些计算。为了让它完全可重现,我正在尝试在 R 中重做它。如有必要,很高兴分享 Perl 代码。
谢谢。
r - 如何使用 tribble 转置数字小标题?
我尝试遵循这种tidyverse
方法,并将数值数据提取为小标题。作为一个矩阵,我只是转置数据。似乎有这个功能tribble
,tibble
但我不能让它工作。
如何在调用中设置列名?我在帮助中看不到它。
给出错误
错误:在“tribble()”调用中未检测到列名
PS:我认为应该有比这样做更简单的方法。
r - 如何对数据帧进行子集化以获得一系列较小的数据帧?
我有一个大型数据框,其中包含我正在处理的项目的所有数据,并且我正在尝试生成一系列较小的数据框,其中包含与两列匹配的数据。因此,例如对于下面的示例数据,我需要编写一段脚本,为年份和殖民地相同的数据点生成一系列数据帧(例如年份 = 2012,殖民地 = A;年份 = 2012,殖民地 = B )。
目前我能做的最好的就是单独制作每个:
等等。但是,要生成大约 80 个数据帧,因此如果可能的话,最好将其自动化。有谁知道我可以更快地做到这一点的方法?
r - 使用 tidyverse 将具有千位分隔符值的多个因子列转换为整数
在 SO 上找不到确切的解决方案,无论如何都希望使用 tidyverse 包的最简洁版本。希望除第一列之外的所有列都是整数,并在现实生活场景中满足更多列
TIA
r - 如何按模型列表中的出现顺序重新排序系数名称的字符向量
R 中的stargazer 包非常适合将多个回归模型显示为并排的列——这是许多社会科学学科的标准样式。但是,该包不能很好地与 knitr+pandoc 配合使用,因为它生成的输出为 HTML 或 TeX,而不是 Markdown。
作为一种解决方案,我正在创建一个函数,该函数可以生成类似于使用 stargazer 创建的表格,但将输出保存为一个简单的数据框,然后我可以使用 pacakgeskable
和pander
knitted 文档进行渲染。对于像broom::tidy
.
但是,我不知道如何对模型中显示的系数进行排序。以这三个模型为例。使用 stargazer 显示时,最终的系数阶数为c("wt", "qsec", "hp", "cyl", "gear", "carb", "drat")
。所有系数的顺序主要基于第一个模型中的系数 ( wt
, qsec
, cyl
, gear
, carb
)。当第二个模型作为新列附加时,hp
行将插入 afterqsec
和 before cyl
。
最后,我希望生成一个系数名称的字符向量,然后我可以使用它dplyr::arrange()
来正确排序多个模型系数的数据框。
排序似乎遵循这个伪算法:
list_1
保存系数名称的第一个列表 ( )- 浏览第二个名称列表。如果
element_1
oflist_2
不匹配element_1
oflist_1
,检查下一个元素list_1
直到匹配,然后在匹配之前插入 - 如果它与其他任何内容不匹配,
element_2
则放在list_2
后面element_1
list_1
- 重复
list_3
, 等等
然而,事实证明,编写简单的 R 代码来生成这个订单比我想象的要困难得多。简单地连接向量中的所有系数名称,然后只保留唯一值不会产生正确的顺序,因为新变量(如hp
)只是添加到现有变量名称的末尾而不是插入到中间:
此外,似乎实现这样的事情的唯一方法是使用大量循环,这感觉非常低效。
那么,最后,如何按模型列表中出现的顺序对系数名称的字符向量进行排序或重新排序,优先考虑列表中第一个模型的顺序?也就是说,最终这是我想要得到的字符向量:c("wt", "qsec", "hp", "cyl", "gear", "carb", "drat")
更新:memisc::mtable(lm0, lm1, lm2)
是一个巧妙的替代观星者,它实际上返回一个数据帧(而不仅仅是文本),但它不会以现有的顺序插入新的系数,而是将它们附加到列表中(最后带有hp
和drat
)。它似乎只是连接所有系数名称并使用它们的唯一值。
r - 按包含元素列表的变量中的元素对数据框进行分组
我想通过在其中一个变量中找到的列表的单个元素group_by
来执行一个重要的、分组和汇总数据框。
y
现在按(并说计算行数)分组,这是一个保存元素列表的变量,所需的最终结果应该是:
因为“A”出现在 2 行中,“B”出现在 2 行中,等等。
注意:总和n
不一定等于数据框中的行数。
r - 合并具有多个数据类的行
我正在尝试将两行合并在一起,以便输出是两全其美的。我已经阅读了一些使用ddply
or的解决方案aggregate
,但是它们仅适用于数字数据。
下面是我正在尝试做的一个例子。
输入:
输出
关键在哪里CNTRY
理想情况下,我应该能够选择是否保留价值x
或y
它们是否不同。
编辑1:
该解决方案应适用DF
于本示例中的数据框,而不适用于x
& y
。我的数据框有多个重复的帐户,我正在尝试合并具有多个实例但共享帐户(键)的所有行。
r - 在 dplyr 中计算组内比例的更优雅的方法?
给定一个 data_frame df <- data_frame(X = c('A', 'A', 'B', 'B', 'B'), Y = c('M', 'N', 'M', 'M', 'N'))
,我需要想出一个 data_frame 告诉我们 50% 的A
's 是M
50% 的A
's 是N
67% 的B
's 是M
33% 的B
s 是N
。
我有一个小程序,我用来做这件事,但它看起来很可怕。
哪个输出,
没有更好的方法来做到这一点吗?我肯定错过了一些东西。
r - 具有固定(文字)字符的向量化字符串
我有以下代码,我希望给我一个 3 的列表,因为有 3 个元素texts
:
相反,我得到了四个列表(我的“模式”参数的长度,这里是smileys
。此外,我收到以下警告消息:
警告消息:在 stri_extract_all_fixed(字符串,模式,简化 = 简化,:较长的对象长度不是较短对象长度的倍数```
好吧,我不认为长度会匹配,因为我正在寻找每个文本中任何笑脸的任何点击。这不像我想将字符串 1 与模式 1 匹配,将字符串 2 与模式 2 匹配,等等。
意识到我弄乱了 stringi 对矢量化的理解,我尝试了这个:
这要好得多,因为它给了我一个 3 的列表,但每个元素又是一个 4 的列表。
我想要的是一个尽可能少嵌套的 3 个列表。某个地方的某个人已经解决了这个问题,但我终其一生都无法弄清楚或无法通过谷歌搜索它。我可以为此做一个 for 循环,但我认为自己是 tidyverse 的公民......
感谢任何帮助。