Что-то не так с использованием pivot_wider и pivot_longer для сбора данных (я закончил это сам.Это было решено.)

#r #dplyr #tidyr

#r #dplyr #тидыр

Вопрос:

Я использовал этот метод для успешного сбора среднего и sd-результата до этого. А затем я попытался использовать этот метод для сбора данных о количестве моих генов с помощью «logFC», «cil», «cir», «ajustP_value».Но я потерпел неудачу, потому что что-то не так с моим результатом.

Точно так же, как это:

  data_1<-data.frame(matrix(sample(1:1200,1200,replace = T),48,25))
    names(data_1) <- c(paste0("Gene_", 1:25))
    rownames(data_1)<-NULL
    
    head(data_1)
    A<-paste0(1:48,"_logFC")
    data_logFC<-data.frame(A=A,data_1)
    #
    data_2<-data.frame(matrix(sample(1:1200,1200,replace = T),48,25))
    names(data_2) <- c(paste0("Gene_", 1:25))
    rownames(data_1)<-NULL
    B_L<-paste0(1:48,"_CI.L")
    data_CIL<-data.frame(A=B_L,data_2)
    data_CIL[1:48,1:6]
    #
    data_3<-data.frame(matrix(sample(1:1200,1200,replace = T),48,25))
    names(data_3) <- c(paste0("Gene_", 1:25))
    rownames(data_3)<-NULL
    C_R<-paste0(1:48,"_CI.R")
    data_CIR<-data.frame(A=C_R,data_3)
    data_CIR[1:48,1:6]
    #
    data_4<-data.frame(matrix(sample(1:1200,1200,replace = T),48,25))
    names(data_4) <- c(paste0("Gene_", 1:25))
    rownames(data_4)<-NULL
    D<-paste0(1:48,"_adj.P.Val")
    data_ajustP<-data.frame(A=D,data_4)
    data_ajustP[1:48,1:6]
    #  combine data_logFC  data_CIL  data_CIR  data_ajustP
    data <- bind_rows(list(
      logFC = data_logFC,
      CIL = data_CIL,
      CIR =data_CIR,
      AJSTP=data_ajustP
    ), .id = "stat")
    
    data[1:10,1:6]
    data_DEG<- data %>%
      pivot_longer(-c(stat,A), names_to = "Gene", values_to = "value") %>%pivot_wider(names_from = "stat", values_from = "value")
    
    head(data_DEG,100)
    str(data_DEG$CIL)
> head(data_DEG,100)
# A tibble: 100 x 6
   A       Gene    logFC   CIL   CIR AJSTP
   <chr>   <chr>   <int> <int> <int> <int>
 1 1_logFC Gene_1    504    NA    NA    NA
 2 1_logFC Gene_2    100    NA    NA    NA
 3 1_logFC Gene_3    689    NA    NA    NA
 4 1_logFC Gene_4    779    NA    NA    NA
 5 1_logFC Gene_5    397    NA    NA    NA
 6 1_logFC Gene_6   1152    NA    NA    NA
 7 1_logFC Gene_7    780    NA    NA    NA
 8 1_logFC Gene_8    155    NA    NA    NA
 9 1_logFC Gene_9    142    NA    NA    NA
10 1_logFC Gene_10  1150    NA    NA    NA
# … with 90 more rows
 

Почему существует так много NAS?
Кто-нибудь может мне помочь? Вары благодарны.

EDITE: я перепутал реальную группу образцов моих данных. Поэтому я изменяю свои данные без правильного индекса.

Вот мой правильный метод:

 data[1:10,1:6]
data<-separate(data,A,c("Name","stat2"),"_")
data<-data[,-3]
data_DEG<- data %>%
  pivot_longer(-c(stat,Name), names_to = "Gene", values_to = "value") %>%pivot_wider(names_from = "stat", values_from = "value")

head(data_DEG,10)
tail(data_DEG,10)

> head(data_DEG,10)
# A tibble: 10 x 6
   Name  Gene    logFC   CIL   CIR AJSTP
   <chr> <chr>   <int> <int> <int> <int>
 1 1     Gene_1    504  1116   774   278
 2 1     Gene_2    100   936   448   887
 3 1     Gene_3    689   189   718   933
 4 1     Gene_4    779   943   690    19
 5 1     Gene_5    397   976    40   135
 6 1     Gene_6   1152   304   343   647
 7 1     Gene_7    780  1076   796  1024
 8 1     Gene_8    155   645   469   180
 9 1     Gene_9    142   256   889  1047
10 1     Gene_10  1150   976  1194   670
> tail(data_DEG,10)
# A tibble: 10 x 6
   Name  Gene    logFC   CIL   CIR AJSTP
   <chr> <chr>   <int> <int> <int> <int>
 1 48    Gene_16   448   633  1080  1122
 2 48    Gene_17    73   772    14   388
 3 48    Gene_18   652   999   699   912
 4 48    Gene_19   600  1163   512   241
 5 48    Gene_20   428  1119  1142   348
 6 48    Gene_21    66   553   240    82
 7 48    Gene_22   753  1119   630   117
 8 48    Gene_23  1017   305  1120   447
 9 48    Gene_24   432  1175   447   670
10 48    Gene_25   482   394   371   696
 

Это идеальный результат!!

Комментарии:

1. Кто-нибудь может мне помочь?

2. Каким вы хотите, чтобы результат был похож?

3. Просто добавьте «logFC», «cil»,»cir», «ajustP_value» в новый столбец в конце. Я не знаю, почему в результате так много NAS. Является ли мой метод неправильным?

4. Это действительно работает, просто A столбец связан с stat столбцом. Вы можете видеть, когда вы используете data %>% pivot_longer(-c(stat,A), names_to = "Gene", values_to = "value") %>% pivot_wider(names_from = "stat", values_from = "value") %>% view() , затем прокрутите весь путь вниз.