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

r - 在 dplyr 或 tidyr 中执行类似于 rbind 的操作?

用下面的数据说,我对每个水果有多少个独特的伙伴感兴趣?

我的df:

我正在尝试掌握 dplyr 和 tidyr。为此,我认为使用n_distinct()in dplyr 会很好。我做了以下事情:

这基本上复制了下面的 10 行,但改变了下半部分水果的顺序。然后我计算新的第一列中的每个水果,它在新的第二列中有多少个独特的伙伴水果,使用n_distinct().

这很好用,但考虑到它的优雅dplyr和优雅tidyr,我想知道是否有更有效的方法来做到这一点,尤其是如果有一种方法可以rbind使用其中一个包来执行这样的操作?

最终数据如下所示:

复制数据:

0 投票
2 回答
1064 浏览

r - extract_numeric 可以处理负数吗?

有没有办法使用 tidyr 的 extract_numeric() 来提取负数?

例如,

我真的很想第二次调用返回-2。

账单

PS:虽然我今天不关心,但我怀疑诸如“-$2.00”之类的情况会使任何一般解决方案复杂化。

0 投票
1 回答
491 浏览

r - R中的字符串拆分选项

我想问一个与R中字符串拆分选项相关的问题。据我所知,我可以看到三个选项。strsplit()在基地,str_split()stringr包装中,separate()tidy包装中。我想知道它们与编程的观点有何不同。鉴于我没有受过程序员培训,这句话可能不清楚。让我给你举个例子。在过去,我了解了包中rbind()rbindlist()中的区别。data.table为什么 rbindlist 比 rbind “更好”?)。这对我来说是很棒的学习。我想知道哪个字符串选项比其他选项更好,就像这篇与rbind()and相关的帖子一样rbindlist()。我希望这个例子能澄清我想问的问题。感谢您抽出宝贵的时间。

0 投票
2 回答
14802 浏览

r - 带有NA的tidyr中的单独()

我有一个与包相关separate()的问题。当数据框中没有 NA 时,separate() 起作用。我一直在使用这个功能。但是,今天我遇到了一个数据框中有 NA 的案例。返回错误消息。我可能很傻。但是,我想知道是否可能不是为这种数据清理而设计的。或者有什么办法可以与 NA 一起工作?非常感谢您抽出宝贵时间。separate()separate()

这是基于评论的更新示例。假设我想分隔 y 中的字符并创建新列。如果我删除带有 NA 的行,separate()将起作用。但是,我不想删除该行,我该怎么办?

0 投票
1 回答
940 浏览

r - 如何使用 tidyr 通过使用列名的字符串删除列来收集 data.table?

似乎在 tidyr 中发现了一个错误。

我有一段这样的代码

作品。

唯一的区别是一组代码在一个函数中,而另一组不在!

0 投票
5 回答
113139 浏览

r - 收集多组列

我有来自在线调查的数据,其中受访者会通过 1-3 次循环问题。调查软件 (Qualtrics) 将此数据记录在多个列中,即调查中的 Q3.2 将包含Q3.2.1.Q3.2.2.和列Q3.2.3.

我想将所有 QN.N* 列组合成整齐的单个 QN.N 列,最终得到如下结果:

tidyr库具有以下gather()功能,该功能非常适合组合组列:

结果数据框有 30 行,正如预期的那样(10 个人,每个人 3 个循环)。但是,收集第二组列不能正常工作——它成功地生成了两个组合列Q3.2Q3.3,但最终得到 90 行而不是 30 行(10 个人的所有组合,Q3.2 的 3 个循环和 Q3 的 3 个循环.3;实际数据中每组列的组合将大幅增加):

有没有办法gather()像这样使用多个调用,组合这样的列的小子集,同时保持正确的行数?

0 投票
5 回答
18134 浏览

r - 在 tidyr/dplyr 中添加零计数行的正确习语

假设我有一些如下所示的计数数据:

我想整理和总结如下:

我知道,x=="B"我们y=="ii"观察到计数为零,而不是缺失值。即现场工作人员实际上在那里,但是因为没有正数,所以没有在原始数据中输入任何行。我可以通过这样做显式添加零计数:

但这似乎有点迂回的做事方式。有没有更清洁的成语?

spread只是为了澄清一下:我的代码已经使用then完成了我需要它做的事情gather,所以我感兴趣的是 tidyrand中找到更直接的路线dplyr

0 投票
2 回答
14313 浏览

r - 使用具有重复标识符的 data.frame/tibble 进行传播

tidyr 的文档表明收集和传播是可传递的,但以下带有“iris”数据的示例显示它们不是,但不清楚原因。任何澄清将不胜感激

我希望数据框“w.iris.df”与“iris.df”相同,但收到以下错误:

“错误:行标识符重复(1、2、3、4、5、6、7、8、9...”

我的一般问题是如何在这种数据集上反转“收集”的应用。

0 投票
1 回答
590 浏览

r - 不能将“gather”输出的列名更改为默认名称以外的任何内容

我正在尝试gathertidyr包中使用,但我无法从默认名称更改输出的列名称。例如:

给我

但不应该"time" "foo" "bar"吗?

我可以将“foo”和“bar”更改为我想要的任何内容,它仍然给我“变量”和“值”作为我的列名。

帮助。我在这里想念什么?

0 投票
1 回答
28943 浏览

r - how spread() in tidyr handles factor levels

I was manipulating my data and found that I did something wrong at some point in the process. When I explored the issue, the problem came down to the following behavior of spread() in the tidyr package.

Here's a demonstrative example. Let us say we have a data frame like the following.

What I wanted to do was to convert this long-formatted data frame into wide format. And I thought spread() is a way to go. The result, however, was not what I expected.

If factor1 is "A" and factor2 is "level2", the value should be 2, but the resulting wide format says 3. Apparently, the num is ordered by the alphabetical order of factor2 (level1 > level10 > level2) and is placed into the wide format. But when it is, the factor2 labels retains the same order as they appear in the original data frame (level1 > level2 > level10).

Could anyone explain why this happens (and/or where I can find relevant information)?