问题标签 [tidyr]

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.

0 投票
2 回答
126 浏览

r - 深度矩阵/数据框中的模式

我试图在具有数百万行的深度矩阵/数据帧(列:id、变量、值)中找到模式的频率。这在如下所示的宽矩阵中很容易做到。我想知道是否有办法在不首先转换为宽格式的情况下做同样的事情(在深矩阵中)。谢谢。

0 投票
2 回答
7297 浏览

r - 一次重塑多个值

我有一个很长的数据集,我想扩大范围,我很好奇是否有一种方法可以使用 R 中的 reshape2 或 tidyr 包一步完成。

数据框df如下所示:

我想解决这个问题:

我知道我可以通过例如 reshape2 获得其中的一部分:

但是有没有办法一次性重塑整个df,同时解决“交易”和“金额”变量?理想情况下,使用新的更合适的列名?

0 投票
3 回答
10995 浏览

r - 无法在 R 版本 3.1.1 中安装 tidyr

我无法tidyr在 R 版本 3.1.1 中安装包

这就是发生的事情:

我有一台 Windows PC 并且刚刚安装dplyr,它安装很容易并且运行顺利。

为什么会发生这种情况的任何想法,因为这似乎不是一个普遍问题。

0 投票
1 回答
5161 浏览

r - tidyr 扩展函数在预期紧凑向量时生成稀疏矩阵

我正在学习 dplyr,来自 plyr,我想从 xtabs 的输出中生成(每组)列(每交互)。

简短摘要:我得到

当我想要


xtabs 数据如下所示:

现在do(希望它是数据框中的数据,如下所示:

现在我想要一个单行输出,其中列是级别的交互。这就是我要找的东西:

但相反我得到

我显然在这里误解了一些东西。我在这里寻找等效于 reshape2 的代码(使用 magrittr 管道以保持一致性):

(注意这里使用了 NA,因为在这个简化的示例中我没有分组变量)


更新 - 有趣的是,添加一个分组列似乎可以解决这个问题 - 为什么它在没有我告诉它的情况下合成(可能来自 row_name)一个分组列?

这似乎是部分解决方案。

0 投票
1 回答
7459 浏览

r - 使用分开()分割日期

我有这个数据框:

我想使用separate()from分隔日期列tidyr

但它不起作用。我设法使用substr()and来做到这一点mutate()

更新:

它不起作用,因为我的行格式不正确。我能够使用我的初始substr()方法进行诊断,我发现我在数据框中有奇怪的条目:

这就是我得到的:

是否有更有效的方法来诊断列元素的结构并在执行 separate() 之前找到格式错误的行?

0 投票
1 回答
296 浏览

regex - 拆分 camelCase 列名

我一直试图弄清楚这一点,并想我会在这里问。

假设我有一个如下数据框:

这个数据框的问题在于每个都包含两个变量:一个变量的值为RegIrreg,另一个变量的值为ProtoIntDistant。我想做的是拆分这些列并使表格变长,最好使用tidyr. 我以为我可以这样做。

这就是我想要的,直到separate(). 我收到一条错误消息,指出这些值没有被拆分,但没有其他关于为什么会这样的建议。我是正则表达式的新手,所以我怀疑问题一定存在,但我无法弄清楚正确的语法可能是什么。

0 投票
5 回答
1160 浏览

r - 使用成对的相关列(dplyr、tidyr、data.table)

我有一个数据框,其中包含多个模型参数中的多个模型参数的多对估计和方差。这是一个生成说明性示例的函数:

这是你得到的开始:

任务是计算每个参数的估计方差与每个参数的方差均值的比率,按部分分组。

因此,例如,对于变量 v1,粗略地只是为了得到数字:

这给了我们 的答案v1,我们只需要对所有其他变量重复。请注意,列名是est_var_后跟一个变量名,该变量名可能是alphag2其他字母数字。

当然,我有一个可怕的解决方案:

这使:

您可以在其中看到第一列与前面的v1-only 示例相同。但是很糟糕。

如果我可以将其熔化、投射、dplyr 或以其他方式整理成这种格式:

然后它微不足道-dd %>% group_by(section, variable) %>% summarise(rat=var(est)/mean(var)) %>% spread(variable, rat)

但这一步让我望而却步……

欢迎使用整洁的解决方案,包括 base R、dplyr、tidyr、data.table 等。

0 投票
1 回答
214 浏览

r - How to spread using dcast?

I'd like to write the tidyr::spread call below in terms of reshape2::dcast

I'm having trouble figuring out what to pass to fun.aggregate

0 投票
2 回答
482 浏览

r - 将一列拆分为多个 R 并在为真时给出逻辑值

我正在尝试将数据框中的一列拆分为多列,这些列将原始列中的值作为新列名。然后,如果在原始列中出现相应列,则在新列中将其设为 1,如果不匹配,则为 0。我意识到这不是最好的解释方式,例如:

并希望将其扩展为宽格式,例如使用 1 和 0(或 T 和 F):

我已经研究tidyrseparate函数和reshape2函数,cast但似乎对给出逻辑值很感兴趣。对此问题的任何帮助将不胜感激。谢谢你。

0 投票
1 回答
2015 浏览

r - 在 tidyr 中,函数 `gather` 使用什么标准将数据帧从宽映射到长?

我试图找出包gather中的参数tidyr

我查看了文档,语法如下:

gather(data, key, value, ..., na.rm = FALSE, convert = FALSE)

帮助文件中 有一个示例:

我很好奇最后一行:
gather(stocks, stock, price, -time)

这里,stocks明明就是我们要修改的数据,没问题。

所以我可以读到它stock并且price是键值对的参数——但是这个函数如何决定如何选择列来创建这个键值对呢?原始数据框如下所示:

我没有看到任何迹象表明我们应该使用X,Y或的任何组合Z。当我使用这个函数时,我觉得我只是在为我想要的长格式数据框中的列选择名称,并祈祷它gather神奇地起作用。想想看,我用的时候也有这种感觉melt

是否gather查看列的类型?它是如何从宽映射到长的?

编辑 下面的很好的答案,下面的很好的讨论,对于想要更多关于tidyr包的哲学和使用信息的人来说,一定要阅读这篇论文,尽管小插图没有解释语法。