相关疑难解决方法(0)

比较聚集(tidyr)融化(reshape2)

我喜欢reshape2套餐,因为它让生活如此轻松.通常,Hadley在之前的软件包中进行了改进,从而实现了简化,运行速度更快的代码.我想我给tidyr一抡,并从我读我认为gather是非常相似meltreshape2.但在阅读完文档后,我无法gather完成相同的任务melt.

数据视图

这是一个数据视图(dput帖子末尾的实际数据):

  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
Run Code Online (Sandbox Code Playgroud)

这是melt时尚的代码,我的尝试gather.我gather怎么能做同样的事情melt

library(reshape2); library(dplyr); library(tidyr)

dat %>% 
   melt(id=c("teacher", "pd"), value.name="date") 

dat %>% 
   gather(key=c(teacher, pd), value=date, -c(teacher, pd)) 
Run Code Online (Sandbox Code Playgroud)

期望的输出 …

r reshape2 tidyr

64
推荐指数
2
解决办法
2万
查看次数

使用带有矩阵或data.frame的融合提供不同的输出

请考虑以下代码:

set.seed(1)
M = matrix(rnorm(9), ncol = 3)
dimnames(M) = list(LETTERS[1:3], LETTERS[1:3])

print(M)
           A          B         C
A -0.6264538  1.5952808 0.4874291
B  0.1836433  0.3295078 0.7383247
C -0.8356286 -0.8204684 0.5757814

melt(M)

  Var1 Var2      value
1    A    A -0.6264538
2    B    A  0.1836433
3    C    A -0.8356286
4    A    B  1.5952808
5    B    B  0.3295078
6    C    B -0.8204684
7    A    C  0.4874291
8    B    C  0.7383247
9    C    C  0.5757814
Run Code Online (Sandbox Code Playgroud)

如果我melt使用a 调用data.frame,我会得到不同的结果:

DF = data.frame(M)

melt(DF)

  variable      value …
Run Code Online (Sandbox Code Playgroud)

r matrix dataframe melt reshape2

7
推荐指数
1
解决办法
6929
查看次数

标签 统计

r ×2

reshape2 ×2

dataframe ×1

matrix ×1

melt ×1

tidyr ×1