比方說,我有這樣的熔融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