получить <NA>при использовании as.factor () - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь преобразовать каждое значение столбца data.frame в факторы, поэтому я могу использовать их в качестве «групп» на графике коробчатого графика. Однако, используя функции as.factor () и factor (), оно превращает каждое значение в. В столбце есть 5 различных типов клеток: CD8, CD4, Bcell, Mono, Gran - и все обращаются к NA.

Смущает, когда я применяю функцию только к одной строке столбца, тогда она прекрасно работает. Фрейм данных очень очень большой (более 3 миллионов строк) - может ли это быть причиной проблемы?

Код:

> head(BP)
 Methylation Cell_Type
  1  0.03219298       CD8
  2  0.11684228       CD8
  3  0.04214158       CD8
  4  0.26700497       CD8
  5  0.34251732       CD8
  6  0.34231208       CD8

> BP$Cell_Type <- as.factor(BP$Cell_Type)

  > head(BP)
     Methylation Cell_Type
   1  0.03219298      <NA>
   2  0.11684228      <NA>
   3  0.04214158      <NA>
   4  0.26700497      <NA>
   5  0.34251732      <NA>
   6  0.34231208      <NA>

Не знаете, почему это происходит - любой совет будет очень ценится!

Спасибо

Выход из dput (голова (BP))

> dput(head(BP))
 structure(list(Methylation = c(0.0321929818018839, 
 0.116842281589967, 
 0.0421415803696093, 0.267004971824527, 0.342517319094108, 
 0.342312083101948
 ), Cell_Type = structure(list(Cell_Type = structure(c(3L, 3L, 
 3L, 3L, 3L, 3L), .Label = c("Bcell", "CD4", "CD8", "Gran", "Mono"
 ), class = "factor")), row.names = c(NA, 6L), class = 
 "data.frame")), row.names = c(NA, 
 6L), class = "data.frame")

1 Ответ

2 голосов
/ 19 апреля 2020

Может быть, убедитесь, что Cell_Type является первым символом?

BP <- tibble::tribble(
     ~Methylation, ~Cell_Type,
  0.03219298,  "CD8",
  0.11684228,  "CD8",
  0.04214158,  "CD8",
  0.26700497,  "CD8",
  0.34251732,  "CD8",
  0.34231208,  "CD8")

BP$Cell_Type <- as.factor(BP$Cell_Type)  


print(BP)

Methylation Cell_Type
        <dbl> <fct>    
1      0.0322 CD8      
2      0.117  CD8      
3      0.0421 CD8      
4      0.267  CD8      
5      0.343  CD8      
6      0.342  CD8   

Или просто

BP$Cell_Type <- as.factor(as.character(BP$Cell_Type))

...