有什么方法可以从数组数据帧的列中获取相应的值,在这些数据帧中,引用的顺序描述为一个。
示例数据
data.frame(ref="ENSG00000272602.1;ENSG00000272602.4;ENSG00000272602.2" , b="0;1;0", c="1;3;0", d="0;1;7", e="0;3.2;2")
ref b c d e
ENSG00000272602.1;ENSG00000272602.4;ENSG00000272602.2 0;1;0 1;3;0 0;1;7 0;3.2;2
所需的输出
ref b c d e
1 ENSG00000272602.4 1 3 1 3.2
答案 0 :(得分:2)
我们可以将;
与cSplit
拆分为'long'格式,并使用filter_at
来获取具有任何非零值的行
library(splitstackshape)
library(dplyr)
cSplit(d1, names(d1), ";", "long") %>%
filter_at(-1, any_vars(. > 0))
# ref b c d e
#1 ENSG00000272602.4 1 3 1 3.2
或使用separate_rows
library(tidyr)
d1 %>%
separate_rows(everything(), sep= ";") %>%
filter_at(-1, any_vars(. > 0))
# ref b c d e
#1 ENSG00000272602.4 1 3 1 3.2
d1 <- data.frame(ref="ENSG00000272602.1;ENSG00000272602.4;ENSG00000272602.2" , b="0;1;0", c="1;3;0", d="0;1;7", e="0;3.2;2")
答案 1 :(得分:1)
您可以使用struct task_struct
:
separate_rows()
答案 2 :(得分:1)
使用try
closeable2
closeable1
finally
,我们可以在data.table
上分割字符串,创建新行,然后基于";"
过滤行。
target