【问题标题】:Reshape a series of repeated data in R重塑R中的一系列重复数据
【发布时间】:2015-08-25 06:24:14
【问题描述】:

我有一个重复测量的宽格式数据框

id method    day1 day2 day3
1   A         4,5   6    5,6
2.  B          3   2,5    5
3   C          2    4,2   3

我想把它改造成像

这样的格式
Method    Time  value
A        Day1    4,5
A        Day2     6
A        Day3     5,6
B        Day1     3
B        Day2     2,5
B        Day3     5
C...................

但是改变宽到长的重塑功能只给我每个组单独的,有没有人有关于按顺序重塑的想法?

【问题讨论】:

  • 请编辑您的帖子以修复数据格式和差异,例如dayDay之间的差异。

标签: r


【解决方案1】:

我们可以使用melt 中的reshape2 将“宽”格式转换为“长”格式。我们在measure中指定列索引。

library(reshape2)
dM <- melt(df1, measure=3:5)[-1]

然后order 'method' 列得到预期的输出

dM1 <- dM[order(dM$method),]
row.names(dM1) <- NULL
dM1
#    method variable value
#1      A     Day1   4,5
#2      A     day2     6
#3      A     day3   5,6
#4      B     Day1     3
#5      B     day2   2,5
#6      B     day3     5
#7      C     Day1     2
#8      C     day2   4,2
#9      C     day3     3

数据

df1 <- structure(list(id = c(1, 2, 3), method = c("A", "B", "C"),
Day1 = c("4,5", 
"3", "2"), day2 = c("6", "2,5", "4,2"), day3 = c("5,6", "5", 
"3")), .Names = c("id", "method", "Day1", "day2", "day3"),
class = "data.frame", row.names = c(NA, -3L))

【讨论】:

  • 谢谢,但我需要对每个组进行 Anova 测试,所以我希望每个组中的每个方法都像我写的第二个数据框一样
  • @Madamespring 我发现您显示的预期输出与我得到的输出之间没有任何区别。关于Anova 测试,这是一个不同的问题
  • 我使用了订单,但它再次将数据框重新调整为宽格式,并且由于我的数据集很大,我无法为每个元素执行您推荐的结构函数:(
  • @Madamespring 您必须在melt 之后执行order。我不确定你到底发生了什么。
猜你喜欢
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 2014-11-09
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
  • 2010-12-04
相关资源
最近更新 更多