【发布时间】:2019-08-12 20:55:56
【问题描述】:
我有一个大数据框(n=553),等位基因列有 3 个级别(0、1、2),范围列有 2 个级别(正常和高)。
dd <- data.frame(
Allele = c(0, 0, 1, 1, 2, 2),
Range = c("High", "Normal", "High", "Normal", "High", "Normal"),
Frequency = c(1L, 2L, 9L, 7L, 28L, 17L)
)
我希望能够获取整个数据框并将其转换为 2x3 表,其中输出将等位基因列和范围作为行
我遇到的问题是我希望能够添加与行匹配的所有频率计数,即如果等位基因 = 0 和范围 = 正常,然后将所有匹配行的频率加在一起。
感觉有一个简单的解决方案,但我似乎想不出一个。非常感谢任何帮助
【问题讨论】:
-
欢迎来到 SO!你能显示预期的输出吗? (+1 用于可重现的示例)
-
您描述的第一部分似乎是从长数据到宽数据的简单重塑,但是添加频率是什么意思?您是否期望对给定的等位基因和范围组合进行多次观察?如果是这样,您需要在示例数据中添加一些示例
-
可能是
xtabs(Frequency ~ Range + Allele, dd)。 -
@camille 例如,数据帧的第一行是 0 Normal 1,假设数据帧下方的某处有另一行,行 0 Normal 10。输出应将 1+10 加在一起为以及任何其他具有 0 和 Normal 的行
-
reshape2::dcast(data = dd, formula = Allele ~ Range, value.var = "Frequency", fun.aggregate = sum)
标签: r