118得票4回答
dplyr summarise:相当于“.drop=FALSE”的功能,保留输出中长度为零的分组。

使用plyr中的ddply函数和summarise时,默认情况下会删除空类别。您可以通过添加.drop = FALSE来更改此行为。但是,当使用dplyr中的summarise时,这种方法不起作用。还有其他方法可以在结果中保留空类别吗? 以下是一个使用虚假数据的示例。library(dply...

116得票5回答
收集多个列集

我有一份在线调查的数据,受访者需要回答问题循环1到3次。调查软件(Qualtrics)以多列的形式记录这些数据——也就是说,在调查中Q3.2将有Q3.2.1.、Q3.2.2.和Q3.2.3.三个不同的列。df <- data.frame( id = 1:10, time = as...

108得票1回答
使用tidyr在R中展开多列数据

使用此示例变量df <- data.frame(month=rep(1:3,2), student=rep(c("Amy", "Bob"), each=3), A=c(9, 7, 6, 8, 6, 9), ...

79得票3回答
如何使用tidyr::replace_na替换数据框中的所有NA?

我想用0填充数据中的所有NA。有人知道如何使用tidyr中的replace_na来实现吗?根据文档,我们可以轻松地将不同列中的NA替换为不同的值。但是如何用某个值替换掉所有的NA?我有很多列... 以mtcars数据集为例:mtcars [sample(1:nrow(mtcars), 4)...

75得票5回答
数据透视错误:“values_from”中的值没有唯一标识;输出将包含列表列。

我的数据长这样:# A tibble: 6 x 4 name val time x1 <chr> <dbl> <date> <dbl> 1 C Farolillo 7 201...

72得票4回答
如何将多个变量的重复测量转换为宽格式?

我试图将长格式的列转换为宽格式,如下所示。我想使用tidyr来解决这个问题,以便使用我正在研究的数据处理工具,但为了使这个答案更加通用,请提供其他解决方案。 这是我拥有的:library(dplyr); library(tidyr) set.seed(10) dat <- data_...

72得票3回答
比较 gather(tidyr)和 melt(reshape2)

我喜欢 reshape2 包,因为它让生活变得异常简单。通常 Hadley 在以前的包中进行了改进,使得代码更加流畅、更快运行。我想尝试一下 tidyr 并从中读取了一些信息,我认为 gather 与 reshape2 中的 melt 非常相似。但在阅读文档后,我发现 gather 无法完成 ...

65得票11回答
使用dplyr窗口函数计算百分位数

我有一个可行的解决方案,但正在寻找一种更加清晰、易读,可能利用一些较新的dplyr窗口函数的解决方案。 使用mtcars数据集,如果我想查看每个气缸数("cyl")对应的平均数和数量以及每加仑英里数("mpg")的第25,50,75百分位数,则使用以下代码:library(dplyr) li...

64得票3回答
tidyr是否支持类似dcast的在多列上使用spread的功能?

我有以下虚拟数据:library(dplyr) library(tidyr) library(reshape2) dt <- expand.grid(Year = 1990:2014, Product=LETTERS[1:8], Country = paste0(LETTERS, "I"...

55得票8回答
将多个测量列集合(宽格式)重新塑造成单个列(长格式)

我有一个宽格式的数据框,其中包含在不同日期范围内进行的重复测量。在我的示例中,有三个不同的时期,每个时期都有对应的值。例如,第一次测量(Value1)是在从DateRange1Start到DateRange1End的周期内测量的:ID DateRange1Start DateRange1End...