问题标签 [dcast]

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 投票
1 回答
76 浏览

r - 将 data.table 从长转换为宽时压缩相似的列

我正在处理纵向数据集,并以长格式 data.table 对主题进行重复观察。大多数受试者有少数(<10)次重复观察,而少数受试者有许多(>100)次观察。我可以将这个数据集从长转换为宽,如下所示,但它变得非常宽(我在每个时间点都有很多变量)并且大部分都充满了 NA,因为大多数受试者在 11 到 100 的时间没有变量数据. 有没有更优雅的方式将这些数据重铸为宽格式?我在想一些类似于其他语言中参差不齐的数组的东西......

这里存在一些解决方案,但对我来说一个大问题是对象大小:具有大量 NA 的宽矩阵占用了大量不必要的空间。

下面是具有我当前(不希望的稀疏矩阵)解决方案的 MWE。理想情况下,如果某种参差不齐的列表方法可行,则生成的对象将具有 3 行和 3 列,其中“年份”和“代码”列是列表或类似的。作为奖励,如果我可以将“代码”变量嵌套在“年份”变量中作为嵌套的不规则数组,那就太好了。

0 投票
2 回答
1363 浏览

r - R reshape2 或 dplyr/tidyr:计算值在小计中的百分比

让我们以空气质量数据集为基础。

这让我简化了我的真实数据集。到目前为止,我已经这样做了:

这给了我这个:

但是,我正在尝试为每个当前数字列创建一个额外的变量“-percentage-of-days”-subtotal列。所以我的目标是这样的:

对不起,糟糕的格式!但正如您所希望看到的,新的附加列给出了当天和当月每个变量的百分比。

我发现另一个 Stack Overflow 助手建议使用 tidyr 和 dplyr,但我无法根据我的需要调整他们的示例。有人可以告诉我该怎么做吗?

0 投票
2 回答
87 浏览

r - data.table - 有效地操作大型数据集

我对 data.table 的超快速度感到惊讶。下面的代码完全符合我的需要,但是当在大表上执行时,它的性能不是很好。

确信这可以通过 data.table 更快地完成,但我不知道如何。

输出

输出需要是一个矩阵,其中行名是一个规则的天序列。分别为每一列:

  • 第一个值之前的所有值都需要为 NA
  • 最后一个值之后的所有值都必须是 NA
  • 在第一个值和最后一个值之间需要添加 0,因为输入表中不存在

以下代码显示了结果的样子:

输出示例

输入

下表显示了编码/功能的来源/输入:

输入示例

代码工作

以下几行正是我需要的,而且很简单。不过效率不高。
真实表有 700 个唯一的 C 值和 200 万个 E 值。

我做了一些冗长的、不可读的、笨拙的编码,它在 35 秒内创建了包含 1.2B 个单元的矩阵。使用 data.table 必须尽可能快但更优雅,但不是这样。

0 投票
2 回答
47 浏览

r - 在R中将列转换为具有两个汇总值的行

我有一个这样的data.frame:

我想把它转换成这样的东西:

目前我正在使用dcast,如下:

dcast(stats, P ~ Stat, value.var = "V"),这在没有“点”的情况下有效。当我添加点时,它开始使用 _1、_2 等复制新列名。

任何帮助表示赞赏。这不是一个学校项目,我只是一个好奇的顾问,试图在我感兴趣的问题上更新我的统计技能!

0 投票
1 回答
986 浏览

r - 在函数中使用 data.table 进行 dcast

我正在尝试将下面已经有效的代码变成一个函数。

类似的情况,dcast + DT,已经在这里讨论过了!但我无法解决这样的问题。

我想要实现的是:

  • 只更改多行代码的两个参数,并且
  • 将函数中每一行创建的对象写入工作目录

这是已经有效的代码:

我对该功能的尝试:

create.Feature <- function(col1, stat) {

和电话:

我收到以下错误: .subset2(x, i, exact = exact) 中的错误:级别 1 没有此类索引

任何人?

0 投票
1 回答
227 浏览

r - R dcast:将值/条件排除应用于小计

我有一个两部分的问题。在创建类似于我所拥有的数据集时,我们可以从空气质量数据集开始:

给我们这个:

第一个问题:如何从每个每日(全部)小计中去除

我确信我们打算使用dplyr,也许完全代替dcast,但是对于我的生活,我找不到一个展示小计排除的例子。

第二个问题:同样,我们也在尝试计算如何包含所有变量的每日平均行,不包括Temp。所以数据集看起来像这样:

在这里,Day AvgOzoneSolar.RWind的平均值——不包括Temp

并且(all)OzoneSolar.RTemp的总和——不包括Wind

我认为这是另一种情况dplyr,这将是一个类似的解决方案,但我想我会问这两个问题。

编辑:值得一提的是,我的真实世界数据每天“每天”有四个以上的变量,其中一些变量实际上并不每天都出现,但仍然需要包含在每日“日平均”和“(所有)' 计算,因此按名称排除变量(即TempWind)而不是命名所有需要包含的变量(即OzoneSolar.R)会更干净。

0 投票
0 回答
78 浏览

r - R dcast在创建宽格式数据时复制第一个主题

我正在尝试从长格式数据转移到宽格式数据,以便进行一些相关性分析。

但是,dcast 似乎为第一个主题创建了行,并将数据拆分到这两行中,用 NA 填充创建的空单元格。

当我使用字母数字主题代码时,前 2 个主题被复制,我去了数字主题编号,并且必须只复制第一个主题。

长格式数据框的前几行:

创建变量列表:

我的 dcast 命令:

生成的宽格式的前几行:

注意主题 1 有 2 个条目。所有其他主题似乎都是正确的

这是我的命令/参数的问题吗?dcast 中的错误?

编辑1:通过消除过程,仅当我包含“rSII”变量时才会出现额外的条目。这是根据脚本中的上一步计算的变量:

该计算变量是否有一些东西会弄乱某些科目的 dcast ?

编辑 2 以添加我的解决方法:

我最终将计算出的变量四舍五入到小数点后 3 位,这解决了问题。现在一切都在正确投射,没有重复。

0 投票
0 回答
691 浏览

r - 如何在R中创建项目频率矩阵

我正在尝试使用以下数据在 R 中构建项目频率矩阵。

我想要的只是一个表,其中唯一用户作为行,audioID 作为列。我知道我需要使用 dcast 方法来执行此操作,但无法弄清楚该怎么做。我尝试了以下代码,但我知道它不是正确的解决方案。

所需的输出是:

任何帮助都会很有用。

0 投票
3 回答
476 浏览

r - 使用 R 中的 dcast 重塑 EPA 风速和风向数据

我正在尝试将长格式风数据转换为宽格式。风速和风向都列在 Parameter.Name 列中。这些值需要由 Local.Site.Name 和 Date.Local 变量转换。

如果每个唯一的 Local.Site.Name + Date.Local 行有多个观察值,那么我想要这些观察值的平均值。内置参数“fun.aggregate = mean”适用于风速,但无法以这种方式计算平均风向,因为值以度为单位。例如,靠近北 (350, 10) 的两个风向的平均值将输出为南 (180)。例如:((350 + 10)/2 = 180),尽管极坐标平均值为 360 或 0。

“圆形”包将允许我们计算平均风向而无需执行任何三角函数,但我在尝试将这个附加函数嵌套在“fun.aggregate”参数中时遇到了麻烦。我认为一个简单的 else if 语句可以解决问题,但我遇到了以下错误:

目标是能够使用fun.aggregate = mean风速,但mean(circular(Wind Direction, units = 'degrees')风向。

这是原始数据(>100MB): https ://drive.google.com/open?id=0By6o_bZ8CGwuUUhGdk9ONTgtT0E

这是数据的子集(第 100 行): https ://drive.google.com/open?id=0By6o_bZ8CGwucVZGT0pBQlFzT2M

这是我的脚本:

任何帮助将不胜感激!

-spacedSparking

编辑:这是解决方案:

0 投票
1 回答
1450 浏览

r - R:融化和Dcast

我有一个这样的数据集:

这导致:

我想将其转换为:

到目前为止,我的方法是融合数据和后来的 Dcast:

但我没有得到想要的输出,而是得到: