Как отфильтровать определенный символ столбца в R после импорта данных с помощью функции fread

#r #dplyr #filter

Вопрос:

Я импортировал в r файл .tsv с функцией fread из пакета data.table

 dt <- fread( "full_data.tsv", nrows = 1000000)
 

в наборе данных 37 столбцов, что-то вроде этого:

ID ДАННЫЕ lan geo_coord
10002 2020-02-01 русский [10.2,32.5]
10003 2020-02-01 русский [12.2,42.5]
10004 2020-02-01 русский [14.4,22.6]
10005 русский [32.6,23.5]
10004 2020-02-01 русский [16.2,21.2]
10006 русский [16.7,20.2]
10007 2020-02-01 русский
10008 2020-02-01 русский
10009 2020-02-01 русский

Я бы отфильтровал только столбец с географическими координатами (символ), чтобы удалить пустые ячейки, получив такой результат:

ID ДАННЫЕ lan geo_coord
10002 2020-02-01 русский [10.2,32.5]
10003 2020-02-01 русский [12.2,42.5]
10004 2020-02-01 русский [14.4,22.6]
10005 русский [32.6,23.5]
10004 2020-02-01 русский [16.2,21.2]
10006 русский [16.7,20.2]

Я попытался использовать фильтр из dplyr безрезультатно.

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

1. I tried with filter from dplyr without result Какой код вы использовали?

2. Можете ли вы предоставить воспроизводимый пример использования dput с выбранными столбцами, чтобы было ясно, есть ли у вас NA значения или пустые строки?

Ответ №1:

Вы пробовали

 library(tidyverse)
dt %>%
  filter(geo_coord != "" amp; !is.na(geo_coord))
 

Кажется, что отсутствующие не кодируются как таковые, а являются пустыми строками.

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

1. Привет, Акрун, я попробовал ваш код на другом наборе данных, и он работает, к сожалению, он не работает с нужным мне набором данных, но я думаю, что я не дал вам правильных подробностей об этом. Если вам интересно, вы можете найти его на этом сайте: crisisnlp.qcri.org/tbcov , во втором окне «Версия страны:» Я выбрал «Италия (2 ГБ)». на той же странице также есть метаданные, правильное имя столбца «geo_coordinates_lat_lon» вместо «geo_coord», как я писал в сообщении. На самом деле у меня были проблемы с импортом этого набора данных в R, потому что он был слишком большим, поэтому я решил применить грубую стратегию:

2. Импортируйте несколько миллионов строк за раз, а затем фильтруйте данные в соответствии со значениями «geo_coordinates_lat_lon», поскольку мне нужны только строки, которые представляют значение в этом столбце

Ответ №2:

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

 library(dplyr)
dt %>%
    filter(complete.cases(na_if(geo_coord, "")))