problem: mam duży plik danych programu Excel, istnieje ponad 1000 kolumn i ponad 40 000 wierszy. Muszę określić, gdzie dany wiersz ma wartość> 199 w dowolnej komórce. Jeśli jakikolwiek wiersz nie ma> 199 w żadnej komórce, chcę je usunąć. Aby pozostały mi tylko wiersze, w których co najmniej jedna komórka ma wartość> 199.
Mam również ten sam plik danych, co plik tekstowy, więc pomyślałem, że najlepszym rozwiązaniem może być skorzystanie z wiersza polecenia systemu Linux, aby rozwiązać ten problem, a nie użycie pliku programu Excel (który jest nieporęczny do pracy z podaną liczbą wierszy i kolumny). Ale jestem nowicjuszem w Linuksie i awk, więc szukałem ogólnych rad, jak podejść do tego problemu? Dzięki wielkie
Dziękuję za pomoc
Przykładowy obraz zestawu danych poniżej. Tutaj chciałbym tylko wiersze, które wyróżniły komórki (ponieważ są one> 200), ale nie mogę po prostu użyć funkcji sortowania lub skomplikowanych instrukcji if niż, ponieważ w moim zestawie danych jest tak wiele kolumn, więc jest to zbyt czasochłonne ...
Odpowiedzi:
Ponieważ powiedziałeś „szukasz ogólnych porad, jak podejść do tego problemu?” oto jedno podejście:
Jeśli wiesz, jak korzystać z Pythona, możesz zapisać plik jako plik oddzielony przecinkami i uruchomić plik, pisząc mały skrypt, a następnie użyj
csv
czegoś, aby zrobić coś z danymi. Możesz użyć dowolnego systemu operacyjnego, który obsługuje Python.źródło
Nie mam wielu ogólnych rad. W szczególności radzę użyć tego polecenia awk:
Stworzyłem mały plik danych, na podstawie liczb z twojego pliku, a kilka sam stworzyłem:
Aby usunąć wiersze z pliku, wykonaj
Uwagi:
awk
nie powinno mieć problemu z dużą liczbą wierszy (linii). Problemem może być tysiąc kolumn (pól) , ale wątpię w to.źródło