在数组r数据帧中映射各个值

时间:2020-02-08 01:31:56

标签: r arrays dataframe

有什么方法可以从数组数据帧的列中获取相应的值,在这些数据帧中,引用的顺序描述为一个。

示例数据

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

3 个答案:

答案 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