Есть ли функция R для нахождения для правильного разбора текстовых файлов? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть файл test.txt с 7 заголовками.но не каждый ряд имеет 7 значений.Мой текстовый файл показывал только 1 столбец, и я использовал read.delim для разделения столбцов.Но когда я подсчитываю уникальные значения для каждого столбца, я получаю вывод, отличный от того, что я ожидаю

df_test <-  read.delim("Test.txt", sep = "")
#c("ID", "colour", "skin", "eyes", "country", "name", "size"))
testing <- unique(df_test$ID)

A tibble: 54 x 1
   testing                    
   <fct>                      
 1 EGA.0
 2 blue              
 3 green             
 4 ""                         
 5 V-alpha                    
 6 EGA.1
 7 EGA.2
 8 EGA.3
 9 EGA.4
10 EGA.5

Я хотел бы только значения, начинающиеся с EGA в моем столбце ID.Как это исправить?Как мне обрабатывать столбцы, которые не имеют 7 значений?Я не хочу, чтобы значение "color" в "ID" ...

testing <- unique(df_test$ID)

A tibble: 54 x 1
   testing                    
   <fct>                      
 1 EGA.0                  
 6 EGA.1
 7 EGA.2
 8 EGA.3
 9 EGA.4
10 EGA.5

1 Ответ

2 голосов
/ 18 июня 2019

Мы можем использовать str_detect

library(tidyverse)
testing  %>%
    filter(str_detect(testing, "^EGA\\.\\d+"))
# A tibble: 6 x 1
#  testing
#  <fct>  
#1 EGA.0  
#2 EGA.1  
#3 EGA.2  
#4 EGA.3  
#5 EGA.4  
#6 EGA.5  

данные

testing <- structure(list(testing = structure(c(3L, 2L, 9L, 1L, 10L, 4L, 
5L, 6L, 7L, 8L), .Label = c("", "blue", "EGA.0", "EGA.1", "EGA.2", 
"EGA.3", "EGA.4", "EGA.5", "green", "V-alpha"), class = "factor")),
 row.names = c(NA, 
-10L), class = c("tbl_df", "tbl", "data.frame"))
...