【发布时间】:2020-07-27 18:02:14
【问题描述】:
我有一个大数据框 (data.txt)。第一列是基因的名称,其他列是样本。这个df的一个例子:
我跟进了这篇文章:
How to filter rows for every column independently using dplyr
因为正是我正在寻找的。我想根据基因值创建 3 个子集。值的一个子集:0。
但我收到此错误:
Error: Each row of output must be identified by a unique combination of keys. Keys are shared for 448 rows: * 45317, 50187 * 64477, 65535 * 146028, 148040
我用过这段代码:
Data <- read.table("data_CNA.txt",sep="\t", header=TRUE)
library(tidyverse)
gain <- Data %>% gather(name, value, -Hugo_Symbol) %>% filter(value >= 1) %>% spread(name, value)
如果您有任何比这更好的想法,欢迎! 谢谢
【问题讨论】:
-
是的,因为我有 5 个可能的值:-2、-1、0、1、2。所以我们可以说损失
-
错误来自
spread函数您是否有多个同名的列或多个具有相同“Hugo_Symbol”的行? -
@WindSur 我设法得到了 data 。我发现了一个名为“Entrez_Gene_Id”的变量,它是一个 Id 字段,您没有使用它。不确定原因。但是,要使用聚集和传播,您需要唯一标识每一行的 Id 字段。而且由于您的数据集中没有它,因此传播会向您抛出相同的错误。我已修改我的答案以将 Id 字段合并到您的数据框中。
-
我刚刚更新了数据文件。 @Dave2e 它不应该有任何重复。