2017-07-06 14 views
2

は、私は、データフレームには、次のように見えることinput呼ばれています:R - 以前の非NA値のためのNA値をリサイクル

structure(list(sequence = c("LdBPK_010012800.1", "MAQNDKIAPQDQDSF", 
"AQNDKIAPQDQDSFL", "QNDKIAPQDQDSFLD", "NDKIAPQDQDSFLDD", "DKIAPQDQDSFLDDQ", 
"KIAPQDQDSFLDDQP", "IAPQDQDSFLDDQPG", "APQDQDSFLDDQPGV", "PQDQDSFLDDQPGVR", 
"LdBPK_020009000.1", "MAQNDKIAPQDQDSF", "AQNDKIAPQDQDSFL", "QNDKIAPQDQDSFLD", 
"NDKIAPQDQDSFLDD", "DKIAPQDQDSFLDDQ", "KIAPQDQDSFLDDQP", "IAPQDQDSFLDDQPG", 
"APQDQDSFLDDQPGV", "PQDQDSFLDDQPGVR"), score = c(1, 17007, 12388, 
15984, 23405, 31897, 26826, 35239, 35361, 36486, 1, 17007, 12388, 
15984, 23405, 31897, 26826, 35239, 35361, 36486), epitope = structure(c(1L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 
3L, 3L, 3L), .Label = c("", "Epitope", "Non-Epitope"), class = "factor"), 
    positioning = c(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, FALSE), accessions = c("LdBPK_010012800.1", 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, "LdBPK_020009000.1", 
    NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -20L 
), .Names = c("sequence", "score", "epitope", "positioning", 
"accessions"), class = "data.frame") 

(実際に私の元のデータフレームは、100万人以上の行を持っているので、これは単なるです

次の非NA値(この例ではLdBPK_020009000.1)を見つけるまで、非NA値をinput$accessions(LdBPK_010012800.1で始まる)以下にリサイクルしたいと考えています。次に、NA以外の値に遭遇するまで、LdBPK_020009000.1より下のNA値をリサイクルします。

この操作の後、私の新しいデータフレームは次のようになります。

structure(list(sequence = c("LdBPK_010012800.1", "MAQNDKIAPQDQDSF", 
"AQNDKIAPQDQDSFL", "QNDKIAPQDQDSFLD", "NDKIAPQDQDSFLDD", "DKIAPQDQDSFLDDQ", 
"KIAPQDQDSFLDDQP", "IAPQDQDSFLDDQPG", "APQDQDSFLDDQPGV", "PQDQDSFLDDQPGVR", 
"LdBPK_020009000.1", "MAQNDKIAPQDQDSF", "AQNDKIAPQDQDSFL", "QNDKIAPQDQDSFLD", 
"NDKIAPQDQDSFLDD", "DKIAPQDQDSFLDDQ", "KIAPQDQDSFLDDQP", "IAPQDQDSFLDDQPG", 
"APQDQDSFLDDQPGV", "PQDQDSFLDDQPGVR"), score = c(1, 17007, 12388, 
15984, 23405, 31897, 26826, 35239, 35361, 36486, 1, 17007, 12388, 
15984, 23405, 31897, 26826, 35239, 35361, 36486), epitope = structure(c(1L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 
3L, 3L, 3L), .Label = c("", "Epitope", "Non-Epitope"), class = "factor"), 
    positioning = c(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, FALSE), accessions = c("LdBPK_010012800.1", 
    "LdBPK_010012800.1", "LdBPK_010012800.1", "LdBPK_010012800.1", 
    "LdBPK_010012800.1", "LdBPK_010012800.1", "LdBPK_010012800.1", 
    "LdBPK_010012800.1", "LdBPK_010012800.1", "LdBPK_010012800.1", 
    "LdBPK_020009000.1", "LdBPK_020009000.1", "LdBPK_020009000.1", 
    "LdBPK_020009000.1", "LdBPK_020009000.1", "LdBPK_020009000.1", 
    "LdBPK_020009000.1", "LdBPK_020009000.1", "LdBPK_020009000.1", 
    "LdBPK_020009000.1")), row.names = c(NA, -20L), .Names = c("sequence", 
"score", "epitope", "positioning", "accessions"), class = "data.frame") 

私の究極の目標は、accessionsによってグループにdplyrを使用してscore

の下で、各グループの合計を得ることですので、私はこれをやっています

答えて

0

我々はfill

library(tidyverse) 
df1 %>% 
    fill(accessions) 
を使用することができます
関連する問題