问题标签 [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.
r - 深度矩阵/数据框中的模式
我试图在具有数百万行的深度矩阵/数据帧(列:id、变量、值)中找到模式的频率。这在如下所示的宽矩阵中很容易做到。我想知道是否有办法在不首先转换为宽格式的情况下做同样的事情(在深矩阵中)。谢谢。
r - 一次重塑多个值
我有一个很长的数据集,我想扩大范围,我很好奇是否有一种方法可以使用 R 中的 reshape2 或 tidyr 包一步完成。
数据框df
如下所示:
我想解决这个问题:
我知道我可以通过例如 reshape2 获得其中的一部分:
但是有没有办法一次性重塑整个df,同时解决“交易”和“金额”变量?理想情况下,使用新的更合适的列名?
r - 无法在 R 版本 3.1.1 中安装 tidyr
我无法tidyr
在 R 版本 3.1.1 中安装包
这就是发生的事情:
我有一台 Windows PC 并且刚刚安装dplyr
,它安装很容易并且运行顺利。
为什么会发生这种情况的任何想法,因为这似乎不是一个普遍问题。
r - tidyr 扩展函数在预期紧凑向量时生成稀疏矩阵
我正在学习 dplyr,来自 plyr,我想从 xtabs 的输出中生成(每组)列(每交互)。
简短摘要:我得到
当我想要
xtabs 数据如下所示:
现在do(
希望它是数据框中的数据,如下所示:
现在我想要一个单行输出,其中列是级别的交互。这就是我要找的东西:
但相反我得到
我显然在这里误解了一些东西。我在这里寻找等效于 reshape2 的代码(使用 magrittr 管道以保持一致性):
(注意这里使用了 NA,因为在这个简化的示例中我没有分组变量)
更新 - 有趣的是,添加一个分组列似乎可以解决这个问题 - 为什么它在没有我告诉它的情况下合成(可能来自 row_name)一个分组列?
这似乎是部分解决方案。
r - 使用分开()分割日期
我有这个数据框:
我想使用separate()
from分隔日期列tidyr
但它不起作用。我设法使用substr()
and来做到这一点mutate()
:
更新:
它不起作用,因为我的行格式不正确。我能够使用我的初始substr()
方法进行诊断,我发现我在数据框中有奇怪的条目:
这就是我得到的:
是否有更有效的方法来诊断列元素的结构并在执行 separate() 之前找到格式错误的行?
regex - 拆分 camelCase 列名
我一直试图弄清楚这一点,并想我会在这里问。
假设我有一个如下数据框:
这个数据框的问题在于每个都包含两个变量:一个变量的值为Reg
或Irreg
,另一个变量的值为Proto
、Int
或Distant
。我想做的是拆分这些列并使表格变长,最好使用tidyr
. 我以为我可以这样做。
这就是我想要的,直到separate()
. 我收到一条错误消息,指出这些值没有被拆分,但没有其他关于为什么会这样的建议。我是正则表达式的新手,所以我怀疑问题一定存在,但我无法弄清楚正确的语法可能是什么。
r - 使用成对的相关列(dplyr、tidyr、data.table)
我有一个数据框,其中包含多个模型参数中的多个模型参数的多对估计和方差。这是一个生成说明性示例的函数:
这是你得到的开始:
任务是计算每个参数的估计方差与每个参数的方差均值的比率,按部分分组。
因此,例如,对于变量 v1,粗略地只是为了得到数字:
这给了我们 的答案v1
,我们只需要对所有其他变量重复。请注意,列名是est_
或var_
后跟一个变量名,该变量名可能是alpha
或g2
其他字母数字。
当然,我有一个可怕的解决方案:
这使:
您可以在其中看到第一列与前面的v1
-only 示例相同。但是很糟糕。
如果我可以将其熔化、投射、dplyr 或以其他方式整理成这种格式:
然后它微不足道-dd %>% group_by(section, variable) %>% summarise(rat=var(est)/mean(var)) %>% spread(variable, rat)
但这一步让我望而却步……
欢迎使用整洁的解决方案,包括 base R、dplyr、tidyr、data.table 等。
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
r - 将一列拆分为多个 R 并在为真时给出逻辑值
我正在尝试将数据框中的一列拆分为多列,这些列将原始列中的值作为新列名。然后,如果在原始列中出现相应列,则在新列中将其设为 1,如果不匹配,则为 0。我意识到这不是最好的解释方式,例如:
并希望将其扩展为宽格式,例如使用 1 和 0(或 T 和 F):
我已经研究tidyr
了separate
函数和reshape2
函数,cast
但似乎对给出逻辑值很感兴趣。对此问题的任何帮助将不胜感激。谢谢你。
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
包的哲学和使用信息的人来说,一定要阅读这篇论文,尽管小插图没有解释语法。