【发布时间】:2020-12-10 03:41:44
【问题描述】:
我有以下数据集,其中一个子集是:
structure(list(Sex = c("Male", "Male", "Female", "Male", "Male", "Male"
), AgeGroup = structure(c(2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Young",
"Old"), class = "factor"), FPT_Values_LEFT = c(0.615962446,
NA, 0.466983199, 0.607728601, 0.534221292, 0.577650726), FPT_Values_RIGHT = c(0.534368277,
NA, 0.456424206, 0.589604795, 0.564736903, 0.484459132)), row.names = c(NA,
6L), class = "data.frame")
所以:
Sex AgeGroup FPT_Values_LEFT FPT_Values_RIGHT
1 Male Old 0.6159624 0.5343683
2 Male Old NA NA
3 Female Old 0.4669832 0.4564242
4 Male Old 0.6077286 0.5896048
5 Male Old 0.5342213 0.5647369
6 Male Old 0.5776507 0.4844591
我想运行AgeGroup*SIDE*value 的方差分析,但需要让数据集包含对应于FPT_Values_LEFT 或FPT_Value_RIGHT 的侧列。
我使用了melt 的变体,但它并没有准确地与值对齐。
DF$SIDE <- c("Left", "Right")
reshape::melt(id="SIDE")
or
reshape::melt(id=c("SIDE", "AgeGroup"))
reshape::melt(id=c("SIDE", "AgeGroup"), measure.vars = c("FPT_Value_LEFT", "FPT_Value_RIGHT"))
我知道我可以转置和附加数据以将右侧的值移动到左侧,并复制性别和年龄列以匹配,然后添加一个侧列。我不确定是否有更有效的方法。
预期输出:
Sex AgeGroup FPT_Values SIDE
1 Male Old 0.6159624 Left
2 Male Old NA Left
3 Female Old 0.4669832 Left
4 Male Old 0.6077286 Left
5 Male Old 0.5342213 Left
6 Male Old 0.5776507 Left
1 Male Old 0.5343683 Right
2 Male Old NA Right
3 Female Old 0.4564242 Right
4 Male Old 0.5896048 Right
5 Male Old 0.5647369 Right
6 Male Old 0.4844591 Right
【问题讨论】:
-
对不起,我在问题框中更新了它
-
我原以为你只想要
melt(DF, id = c("Sex", "AgeGroup"))。如果您需要一个包含“左”和“右”字样的列,您可以从生成的“变量”列中提取它。 -
@RonakShah 我将其添加到问题中。
-
@A5C1D2H2I1M1N2O1R2T1 我不确定你的意思,对于方差分析,我需要确保它占边