Search code examples
rrstudiodata-cleaning

How to import character column as factor?


I have the below dataset in a .txt file:

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,Action
0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,Up
2,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,Left
4,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,Left
4,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,Up
4,4,0,0,2,0,0,0,0,0,0,0,0,0,0,2,Up
8,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,Left

When i load my dataset into RStudio, i expect that it converts the last column Action to Factor type. But, it considers it as Character.

I can force it to consider it as Factor, but it asks me to

Please insert a comma seprated list of factors (You can find it in below image). But, i do not understand it. Should i insert Levels of Factor, or a List of values which will be replaced with whole Action column?

How can i import my dataset with Factor in last column?

enter image description here

if run str(dt) it gives me:

Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   2979 obs. of  17 variables:
 $ 1     : int  0 2 4 4 4 8 8 8 8 8 ...
 $ 2     : int  0 0 0 2 4 0 0 0 2 4 ...
 $ 3     : int  0 0 0 0 0 0 0 0 0 2 ...
 $ 4     : int  2 0 2 2 0 0 0 2 2 0 ...
 $ 5     : int  0 2 0 0 2 2 4 4 4 4 ...
 $ 6     : int  0 0 0 2 0 0 0 0 0 2 ...
 $ 7     : int  0 0 0 0 0 0 0 0 2 0 ...
 $ 8     : int  2 0 0 0 0 0 0 0 0 0 ...
 $ 9     : int  0 0 0 0 0 2 2 2 2 2 ...
 $ 10    : int  0 0 2 0 0 0 0 2 0 0 ...
 $ 11    : int  0 0 0 0 0 0 0 0 0 0 ...
 $ 12    : int  0 2 0 0 0 0 0 0 0 0 ...
 $ 13    : int  0 0 0 0 0 2 0 0 0 0 ...
 $ 14    : int  0 0 0 0 0 0 0 0 0 0 ...
 $ 15    : int  0 0 0 0 0 0 0 0 0 0 ...
 $ 16    : int  0 0 0 0 2 0 2 0 0 0 ...
 $ Action: chr  "Up" "Left" "Left" "Up" ...
 - attr(*, "spec")=List of 2
  ..$ cols   :List of 17
  .. ..$ 1     : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 2     : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 3     : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 4     : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 5     : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 6     : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 7     : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 8     : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 9     : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 10    : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 11    : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 12    : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 13    : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 14    : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 15    : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ 16    : list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  .. ..$ Action: list()
  .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
  ..$ default: list()
  .. ..- attr(*, "class")= chr  "collector_guess" "collector"
  ..- attr(*, "class")= chr "col_spec"

Solution

  • With base R, this should also work: read.table("FileName.txt", sep = ",", header = TRUE, stringsAsFactors = TRUE)