#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, "")))