问题标签 [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 投票
0 回答
87 浏览

r - 在不使用 row.names 的情况下重新组合 R 中的数据帧

我从一个 data.frame(或 data_frame)开始,其中包含用于分析的因 Y 变量、我的独立 X 变量和一些“Z”变量——我的建模练习不需要的额外列。

我想做的是:

  1. 创建一个没有 Z 变量的分析数据集;
  2. 将这个数据集分解成随机的训练和测试集;
  3. 找到我最好的模特;
  4. 使用该模型预测训练集和测试集;
  5. 按行重新组合训练集和测试集;最后
  6. 按列将这些数据与 Z 变量重新组合。

当然,这是提出问题的最后一步——我如何确保重新组合的训练和测试集中的行与原始数据集中的行匹配?我们可能会尝试使用原始集合中的 row.names 变量,但我同意 Hadley 的观点,即这是一个容易出错的组合(我的话,不是他的)——为什么有一个特殊列的处理方式与所有其他数据列不同?

一种替代方法是创建一个唯一标识每一行的 ID 列,然后在划分训练集和测试集时保留该列(当然,将其从所有建模公式中排除)。这似乎也很笨拙,并且会使我的所有公式更难阅读。

这一定是一个已解决的问题——人们能告诉我他们如何处理这个问题吗?特别是使用 plyr/dplyr/tidyr 包框架?

0 投票
4 回答
77 浏览

r - R:从广泛的标签列表到长的连接列表

我有一个数据框,其中包含由 1 或 0 指示的标签的个人偏好:

(我的数据有更多的标签,而不仅仅是 5 个)

对于网络图,我正在寻找一种将宽格式数据转换为连续每对 tag=1 之间出现的长格式列表的方法。对于上面的示例,它看起来像这样:

我想为此使用tidyr's gather(),但不知道如何将它用于成对的列。我可以为每一对创建新变量并收集它们,但是对于一长串标签,这将变得不切实际。有没有更优雅的方法来做到这一点?甚至是特定的功能?

0 投票
0 回答
222 浏览

r - 在R中合并来自csv文件的行

我有一个来自数据库的 csv 文件,格式如下,并尝试使用“read.csv”命令将其导入 R 以进行统计分析。

csv 文件记录了许多具有 6 个列变量的主题,但出于演示目的,我获取了 4 个人的数据。变量 var1、var2... 等基本上是文本数据,并且根据该特定变量中的字符数溢出到下一行。溢出到多少行没有特定的模式。下一个对象的数据是在前一个对象的最后一次观察之后开始的。由于这种可变性,即使主题数约为 100,csv 文件也有超过三千行。

现在可以连接原始数据库中的行。谁能建议一种方法将所有记录与每个变量的数据放在一行中?我是 R 相关问题的 stackoverflow 的常客,到目前为止,我找到了解决我遇到的所有其他问题的解决方案,这是我第一次陷入困境。看起来像一个独特的问题!

编辑:一路上没有完全空的行。我没有足够的声誉,无法发布文件的图像!

我发布的数据仅包含 4 个主题,但正如您所见,它在 csv 和读入 R 后都进入 17 行。正如我尝试在原始帖子中解释的那样var1......var6是“文本”类型的数据,出于某种原因在它最大化之后,它会溢出到 csv 中的下一行,其中包含空值ID和其他var(n)具有较短文本的值。下一个主题的记录在最晚的最后一行之后开始var(n)。我希望这能解释问题。

0 投票
2 回答
310 浏览

r - Confusion with Spread in tidyr

I have a dataframe as follows:

The head of the dataframe looks like:

What I want to do is then convert this format to the wide format and I tried to use spread function in tidyr.

Before using the spread function I created a new variable called row so as to remove the duplication error.

Now, I used the spread function as follows:

It seems to work but not exactly what I expected. The sample_date is a POSIXct object and when it is transformed the hour, minute and second doesn't show up so the output looks messy.

The column names seems to be right but not the values. For each date, I have values for conductivity, dissolved oxygen, salinity etc... Please help me what needs to be done to fix this issue.

Update:

The new data updated

Then used the formula Akrun recommended:

Sorry for posting large dataset.

The outut I got is as follows:

0 投票
2 回答
1764 浏览

r - 当列名是数字时如何使用收集函数(tidyr 包)?

有什么方法可以使用tidyr 包中的收集函数来收集名称为数字字符的列?例如:

0 投票
1 回答
45 浏览

r - r中宽数据框的困难

我有数据框(如下),其中包含在单次入院和不同入院期间收到不同诊断(DX)的病例(ID)。我想扩大这个数据框,以便每次单独入院时,所有诊断都在单独的列中。我已经尝试过dplyr spread功能,但它没有给出正确的结果。有什么建议吗?

预期的输出如下所示:

0 投票
1 回答
305 浏览

r - R:创建具有周期函数的 data.table

我想以整洁的形式创建一个 data.table,其中包含 articleID、period 和 demand 列(以 articleID 和 period 作为键)。需求受随机函数的影响,输入数据来自另一个 data.frame (params)。它是在运行时为不同数量的周期创建的。

以“不整洁”的形式很容易做到这一点:

有没有一种“整洁”的方式来进行这种创作?我需要复制 rgamma(),但我不确定如何让它使用相应文章的参数。我尝试从 data.table 的交叉连接开始:

但我不知道如何在创建时直接正确地将 rgamma 传递给 dt[,demand] ,也不知道如何在不使用一些丑陋的 for 循环的情况下现在更改值。我还考虑使用 tidyr 包中的 gather(),但据我所知,我也需要使用 for 循环。

对于我当前的用例,我是否使用 data.frame 或 data.table 对我来说并不重要。任何(或两者!)的解决方案将不胜感激。

0 投票
1 回答
338 浏览

r - 使用 dplyr/tidyr 函数的字符串版本(下划线后缀,例如gather_())时带有“-”的排除项

通常使用 dplyr/tidyr,我可以通过否定实现排除

但是,目前,我希望以编程方式指定一些变量并将其排除在外,因此理想情况下

... %>% 聚集_(xVar,-yVar)

其中 xVar 和 yVar 是字符变量(例如,具有值 'x' 和 'y')。

函数的字符串版本是否根本不允许排除,还是有办法做到这一点?

-yVar这两个明显的罪魁祸首paste0('-', yVar)似乎都产生了错误。

0 投票
2 回答
12484 浏览

r - 转置数据帧

周末快乐。

我一直在尝试在 R 中复制这篇博客文章的结果。我正在寻找一种不使用t,最好是使用tidyror来转置数据的方法reshape。在下面的示例中,metadata通过转置 获得data

虽然它达到了我想要的效果,但我觉得它有点不熟练。是否有任何有效的工作流程来转置数据框?

数据输入

0 投票
1 回答
133 浏览

r - 你如何比较两个实验的数据

我经常尝试在两个不同的场景/测试/期间测量百分比变化。

一个示例数据集:

然后我求助于写一些像这样可怕的东西:

但是,当可测量的数量开始增长时,上述解决方案根本无法扩展。此外,代码在排序方面非常脆弱。

我对 R 很陌生。我希望这是一种足够普遍的模式,以便有众所周知的(更智能的)解决方案来解决这个问题。

我将不胜感激任何帮助/指针。