比方说,我有这样的熔融data.frame如何归零熔融数据帧?
molten <- data.frame(
gene = c("a1", "b1", "a1", "b1", "a1", "b1"),
count = c(3, 4, 5, 2, 6, 7),
condition = c("A", "A", "B", "B", "C", "C")
)
# gene count condition
# 1 a1 3 A
# 2 b1 4 A
# 3 a1 5 B
# 4 b1 2 B
# 5 a1 6 C
# 6 b1 7 C
它看起来像这样未熔
molten %>%
dcast(gene ~ condition, value.var = "count")
# gene A B C
# 1 a1 3 5 6
# 2 b1 4 2 7
如何从所有其它数值列减去列A(B和C在这个例子中) 。我希望最终输出能够融化,但是我不知道这是否可以直接完成,或者如果我必须解开,减去然后融化。最终的输出应该是这样的:
# gene A B C
# 1 a1 0 2 3
# 2 b1 0 -2 3
更新:
我也有兴趣在一个更复杂的情况:
molten <- data.frame(
gene = c("a1", "b1", "a1", "b1", "a1", "b1"),
count = c(3, 4, 5, 2, 6, 7),
condition = c("A", "A", "B", "B", "C", "C"),
day = c(0, 0, 1, 1, 2, 2)
)
通过@ eipi10提出的解决方案提供了一个错误:
molten %>%
group_by(gene, condition) %>%
mutate(count = count - count[day == 0])
Error: incompatible size (0), expecting 1 (the group size) or 1
这是我的解决方法:
x <- list(a1 = 3, b1 = 4)
molten %>%
group_by(gene, condition) %>%
mutate(count = count - x[[gene]])
这么简单,谢谢! – nachocab
我使用更复杂的输入矩阵出现错误(请参阅更新后的问题)。你能帮我理解我为什么得到它或如何解决它吗? – nachocab
查看更新的答案。 – eipi10