Как я могу использовать read.table в R правильно с этой базой данных? - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь прочитать эту фиктивную базу данных с read.table(file="clipboard") в R:

             Aspecto   Sexo      Ranking
1             Imagen   Hombre    7.50
2      Mantenimiento   Hombre    7.18
3               Otro   Hombre    7.05
4  Espacios de venta   Hombre    6.91
5         Vigilancia   Hombre    6.36
6             Tiempo   Hombre    6.51
7    Espacios libres   Hombre    6.40
8             Imagen   Mujer     7.21
9      Mantenimiento   Mujer     7.30
10              Otro   Mujer     6.90
11 Espacios de venta   Mujer     7.02
12        Vigilancia   Mujer     6.53
13            Tiempo   Mujer     6.40
14   Espacios libres   Mujer     5.78

Этот код, кажется, работает:

pw <- read.table(file="clipboard", dec=".", sep=",", header=TRUE)

Но структура явно что-то, что я не хочу:

str(pw)
'data.frame':   14 obs. of  1 variable:
 $ Aspecto...Sexo......Ranking: Factor w/ 14 levels "1  

Я пробовал много вещей, включая fill=TRUE и другие аргументы, но я просто не могу получить то, что ожидаю. Например:

pw <- read.table(file="clipboard", dec=".", sep="", header=TRUE)
Error in read.table(file = "clipboard", dec = ".", sep = "", header = TRUE) : 
  more columns than column names

Любой совет будет высоко ценится.

1 Ответ

1 голос
/ 12 апреля 2020

Вы можете использовать read.fwf, поскольку столбцы имеют фиксированную ширину, и у вас нет кавычек, окружающих строки символов. А поскольку в первой строке всего 3 имени, мы пропускаем это, но читаем их позже, используя scan.

clipboard <- read.fwf("clipboard.txt", widths=c(2,18,9,8), skip=1, as.is=TRUE) 
# or row.names=1 to ignore the first un-named column

colnames(clipboard)[2:4] = scan("clipboard.txt", what=rep("character", 3), nlines=1)

str(clipboard)

'data.frame':   14 obs. of  4 variables:
 $ V1     : num  1 2 3 4 5 6 7 8 9 10 ...
 $ Aspecto: chr  "            Imagen" "     Mantenimiento" "              Otro" " Espacios de venta" ...
 $ Sexo   : chr  "   Hombre" "   Hombre" "   Hombre" "   Hombre" ...
 $ Ranking: num  7.5 7.18 7.05 6.91 6.36 6.51 6.4 7.21 7.3 6.9 ...
...