Tag: tidyr

比较聚集(tidyr)融化(重塑2)

我喜欢reshape2软件包,因为它让生活变得如此简单。 通常,Hadley在以前的软件包中进行了改进,使代码更加简化,运行速度更快。 我想我会给tidyr一个旋转,从我读的东西,我认为gather非常相似,从重塑2 melt 。 但是在阅读完文档之后,我无法gather去完成melt任务。 数据视图 这里是数据的视图(在dput结尾的dputforms的实际数据): teacher yr1.baseline pd yr1.lesson1 yr1.lesson2 yr2.lesson1 yr2.lesson2 yr2.lesson3 1 3 1/13/09 2/5/09 3/6/09 4/27/09 10/7/09 11/18/09 3/4/10 2 7 1/15/09 2/5/09 3/3/09 5/5/09 10/16/09 11/18/09 3/4/10 3 8 1/27/09 2/5/09 3/3/09 4/27/09 10/7/09 11/18/09 3/5/10 码 这里是melt时尚的代码,我试图gather 。 我怎样才能让gather做同样的事情呢? library(reshape2); library(dplyr); library(tidyr) dat %>% melt(id=c("teacher", "pd"), value.name="date") […]

是否有可能使用类似于dcast的tidyr中的多列进行传播?

我有以下的虚拟数据: library(dplyr) library(tidyr) library(reshape2) dt <- expand.grid(Year = 1990:2014, Product=LETTERS[1:8], Country = paste0(LETTERS, "I")) %>% select(Product, Country, Year) dt$value <- rnorm(nrow(dt)) 我select了两个产品 – 国家组合 sdt <- dt %>% filter((Product == "A" & Country == "AI") | (Product == "B" & Country =="EI")) 我想看看每个组合的价值观。 我可以用dcast做到这dcast : sdt %>% dcast(Year ~ Product + Country) 是否有可能从包裹tidyr spread做到这一点 ?

一次重塑多个值

我有一个很长的数据集,我想扩大,我很好奇,如果有一种方法,在R一步使用reshape2或tidyr包完成这一切。 dataframedf如下所示: id type transactions amount 20 income 20 100 20 expense 25 95 30 income 50 300 30 expense 45 250 我想要得到这个: id income_transactions expense_transactions income_amount expense_amount 20 20 25 100 95 30 50 45 300 250 我知道我可以通过例如reshape2获得部分path: dcast(df, id ~ type, value.var="transactions") 但是,是否有办法一次性重塑整个DF,同时解决“交易”和“金额”两个variables? 理想情况下,新的更适合的列名称?

R用tidyr传播多列

以此示例variables df <- data.frame(month=rep(1:3,2), student=rep(c("Amy", "Bob"), each=3), A=c(9, 7, 6, 8, 6, 9), B=c(6, 7, 8, 5, 6, 7)) 我可以使用spread从tidyr改变这种广泛的格式。 > df[, -4] %>% spread(student, A) month Amy Bob 1 1 9 8 2 2 7 6 3 3 6 9 但是,我怎么能传播两个值,例如A和B ,这样的输出是类似的 month Amy.A Bob.A Amy.B Bob.B 1 1 9 8 6 5 2 […]

用重复标识符传播data.frame / tibble

tidyr的文件表明,收集和传播是传递性的,但下面的例子与“虹膜”数据显示他们不是,但不清楚为什么。 任何澄清将不胜感激 iris.df = as.data.frame(iris) long.iris.df = iris.df %>% gather(key = feature.measure, value = size, -Species) w.iris.df = long.iris.df %>% spread(key = feature.measure, value = size, -Species) 我期望dataframe“w.iris.df”与“iris.df”相同,但是却收到下列错误: “错误:行的重复标识符(1,2,3,4,5,6,7,8,9 …” 我的一般问题是如何在这类数据集上反转“聚集”的应用。

我怎样才能把多重variables的重复测量扩散到广泛的格式?

我试图采取长格式的列,并将其传播到如下所示的宽格式。 我想用tidyr解决这个我正在投资的数据处理工具,但为了使这个答案更普遍,请提供其他解决scheme。 这是我有: library(dplyr); library(tidyr) set.seed(10) dat <- data_frame( Person = rep(c("greg", "sally", "sue"), each=2), Time = rep(c("Pre", "Post"), 3), Score1 = round(rnorm(6, mean = 80, sd=4), 0), Score2 = round(jitter(Score1, 15), 0), Score3 = 5 + (Score1 + Score2)/2 ) ## Person Time Score1 Score2 Score3 ## 1 greg Pre 80 78 84.0 ## […]

将多组测量列(宽格式)重新整理为单列(长格式)

我有一个宽格式的dataframe,在不同的date范围内进行重复测量。 在我的例子中,有三个不同的时期,都有相应的价值。 例如,在从“DateRange1Start”到“DateRange1End”期间测量的第一个度量('Value1'): ID DateRange1Start DateRange1End Value1 DateRange2Start DateRange2End Value2 DateRange3Start DateRange3End Value3 1 1/1/90 3/1/90 4.4 4/5/91 6/7/91 6.2 5/5/95 6/6/96 3.3 我正在寻找重塑的数据到一个长的格式,使DateRangeXStart和DateRangeXEnd列分组。 因此,原表中的1行在新表中成为3行: ID DateRangeStart DateRangeEnd Value 1 1/1/90 3/1/90 4.4 1 4/5/91 6/7/91 6.2 1 5/5/95 6/6/96 3.3 我知道必须有一种方法来处理reshape2 / melt / tidyr / tidyr ,但我似乎无法弄清楚如何以这种特殊的方式将多组度量variables映射到一组值列中。

收集多组列

我有一个在线调查的数据,受访者经历了1-3次的问题循环。 调查软件(Qualtrics)将这些数据记录在多个栏目中,也就是说,调查中的Q3.2.1.将具有Q3.2.1. , Q3.2.2. 和Q3.2.3. : df <- data.frame( id = 1:10, time = as.Date('2009-01-01') + 0:9, Q3.2.1. = rnorm(10, 0, 1), Q3.2.2. = rnorm(10, 0, 1), Q3.2.3. = rnorm(10, 0, 1), Q3.3.1. = rnorm(10, 0, 1), Q3.3.2. = rnorm(10, 0, 1), Q3.3.3. = rnorm(10, 0, 1) ) # Sample data id time Q3.2.1. Q3.2.2. […]