проблема: у меня большой файл данных Excel, в нем более 1000 столбцов и более 40000 строк. Я должен определить, где данная строка имеет значение> 199 в любой данной ячейке. Если какая-либо строка не имеет> 199 в любой данной ячейке, то я хочу удалить эти строки. Так что у меня остались только строки, где хотя бы одна ячейка имеет значение> 199.

У меня также есть тот же файл данных, что и в текстовом файле, поэтому я подумал, что наилучшим подходом может быть использование командной строки linux для решения этой проблемы, а не использование файла excel (который громоздок для работы, учитывая количество строк и колонны). Но я новичок в Linux и AWK, поэтому я искал общий совет, как подойти к этому вопросу? Спасибо большое

Спасибо за помощь.

Пример изображения данных приведен ниже. Здесь я хотел бы только строки с выделенными ячейками (потому что их> 200), но я не могу просто использовать функцию сортировки или сложные операторы if than, потому что в моем наборе данных так много столбцов, что это занимает слишком много времени ...

введите описание изображения здесь

2 ответа2

0

Так как вы сказали «ищите общий совет, как подойти к этому вопросу?« Вот один из подходов:

Если вы знаете, как использовать Python, вы можете сохранить файл в виде файла, разделенного запятыми, и просмотреть его, просто написав небольшой скрипт, а затем используя csv чтобы что-то сделать с данными. Вы можете использовать любую операционную систему, которая поддерживает Python.

0

У меня нет общих советов.  В частности, я советую вам использовать эту команду awk:

awk '{
        over=0
        for (i=1; i<=NF; i++) if ($i > 199) over=1
        if (over) print
     }'

Я создал небольшой файл данных, основанный на числах из вашего файла, и несколько я составил самостоятельно:

$ cat input
81      23      40
31      0       416     12
2       2       1
157     41      80      201
417     42      17

$ ./myscript input
31      0       416     12
157     41      80      201
417     42      17

Чтобы удалить строки из вашего файла, выполните

$ ./myscript input > input.new
$ mv input.new input

Заметки:

  • Ради себя вы должны решить, является ли ваше требование> 199,> 200, ≥ 200 или как.
  • Если вам нужно сохранить строку 1 (т. Е. Строку 1, строку заголовка), скажите так.
  • Я не проверял это на большом файле.  awk не должно быть проблем с огромным количеством строк (строк).  Тысяча столбцов (полей) может быть проблемой, но я сомневаюсь в этом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .