WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Löschen von Spalten in Tabelle/ Löschen von Text in Zelle

 

soulid
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 05.10.14
Wohnort: NRW
Version: ---
     Beitrag Verfasst am: 19.11.2020, 13:32     Titel: Löschen von Spalten in Tabelle/ Löschen von Text in Zelle
  Antworten mit Zitat      
Hallo,
ich muß hier eine Tonne von Daten importieren. Ca 50 Spalten und >2000000 Zeilen.
Das ist für den Rechner nicht praktikabel.
Darum würde ich gerne die (1) Spalten Löschen in denen ein bestimmter Text steht und (2) Textinhalt reduzieren (also von :"Signlaresult:0x00" zu 0x00"
Ich scheiter schon an der Indexierung Embarassed

Code:
idx = find(ismember(part1, 'bla'))
Error using tabular/ismember (line 37)
A and B must both be tables, or both be timetables.
 


oder
Code:
Index = strfind(part1, '2020');
Error using strfind
Conversion to double from table is not possible.


erzeugt halt immer Fehlermeldungen...

Wenn Ihr mir auf die Sprünge helfen könntet wäre ich echt dankbar!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.11.2020, 14:00     Titel:
  Antworten mit Zitat      
Hallo,

Am besten kann man dir helfen, wenn du einen Dateiausschnitt und den Code zum Import zur Verfügung stellst.

50 Spalten und 2 Mio Zeilen sollten übrigens je nach Inhalt durchaus noch machbar sein. Man muss lediglich aufpassen, dass man sich keinen unnötigen Speicheroverhead einfängt.

Zitat:
Spalten Löschen in denen ein bestimmter Text steht

Das ist mir unklar. Soll wirklich die komplette Spalte gelöscht werden, wenn irgendwo ein bestimmter Text steht? Oder soll vielleicht eher eine Zeile gelöscht werden, wenn in einer Spalte etwas bestimmtes steht?

Zitat:
Textinhalt reduzieren (also von :"Signlaresult:0x00" zu 0x00"

Da sollte erase helfen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
soulid
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 05.10.14
Wohnort: NRW
Version: ---
     Beitrag Verfasst am: 19.11.2020, 14:23     Titel:
  Antworten mit Zitat      
Hallo Harald,
ich habe einen kleinen Ausschnitt mal angehangen.

Um das konkret zu machen:
- Ich möchte z.B. aus allen Zellen 'signaltoken:" oder auch nur das Anführungszeichen entfernen
- Ich möchte gerne alle Spalten entfernen die '{"issignaltokencalculated":"NO"' zum Inhalt haben


Erase führt übrigens auch zu Fehlermeldungen
Code:
newStr = erase(part1,'2020');
Error using erase (line 35)
First argument must be a string array, character vector, or cell array of character vectors.
 


oder

Code:
newStr = erase(part1,"2020");
Error using erase (line 35)
First argument must be a string array, character vector, or cell array of character vectors.
 


matlab.mat
 Beschreibung:

Download
 Dateiname:  matlab.mat
 Dateigröße:  1.76 KB
 Heruntergeladen:  100 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.11.2020, 09:17     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich möchte z.B. aus allen Zellen 'signaltoken:" oder auch nur das Anführungszeichen entfernen

Manche Spalten sind ja aber nicht mal Text, bei denen ergibt das also keinen Sinn. Ich würde das wirklich auf die Spalten anwenden, um die es dir geht.
Code:
part1.Var23 = erase(part1.Var23, "signaltoken");


Zitat:
Ich möchte gerne alle Spalten entfernen die '{"issignaltokencalculated":"NO"' zum Inhalt haben

Das ist mir weiterhin unklar. Bitte auf die Rückfrage eingehen:
Zitat:
Soll wirklich die komplette Spalte gelöscht werden, wenn irgendwo ein bestimmter Text steht? Oder soll vielleicht eher eine Zeile gelöscht werden, wenn in einer Spalte etwas bestimmtes steht?


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
soulid
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 05.10.14
Wohnort: NRW
Version: ---
     Beitrag Verfasst am: 20.11.2020, 09:54     Titel:
  Antworten mit Zitat      
Hallo Harald,
ich habe zusätzlich das Problem das ich 100 Dateien zum import bekommen habe die auch noch unterschiedliche Datenstruktur haben. In manchen ist die Spalte [issignaltokencalculated":"NO"] enthalten...oder nicht.

Deswegen möchte ich in der Tabelle die Zelle suchen [issignaltokencalculated":"NO"] und die gesamte Spalte löschen- falls die Spalte vorhanden ist.

Um die Speichergröße zu reduzieren wollte ich Textzeichen über die gesamte Tabelle reduzieren.

Ich habe mittlerweile gesehen das die von mir geschickte Datei verschiedene Zelltypen enthält. Kann es sein das ich deswegen keinen Befehl ans rennen bekomme?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.11.2020, 11:09     Titel:
  Antworten mit Zitat      
Hallo,

ich frage mich, ob man das nicht schon beim Datenimport angehen kann und soll.
Was mich z.B. wundert ist, dass dein Table die Standard-Namen Var1 bis Var63 hat. Das ist doch ohnehin unübersichtlich?
Braucht man denn meist überhaupt so viele Spalten? Wenn nicht, sollte man überhaupt nur die Spalten importieren, die man braucht, statt erst alles zu importieren und dann einen Teil wegzuwerfen.

Zitat:
Um die Speichergröße zu reduzieren wollte ich Textzeichen über die gesamte Tabelle reduzieren.

Datumsangaben würde ich als Datetime importieren statt als Zeichenkette. Dann ist die 2020 nur Teil der Anzeige.
Auch hier gilt, dass das meines Erachtens sinnvoll nur auf einer oder mehreren ausgewählten Spalte machbar ist.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
soulid
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 05.10.14
Wohnort: NRW
Version: ---
     Beitrag Verfasst am: 20.11.2020, 15:26     Titel:
  Antworten mit Zitat      
Hallo Harald,
ich habe jetzt eine Möglichkeit gefunden mein Ziel zu erreichen.
Ich habe die Tabelle in einen String überführt
Zitat:
part1=table2cell(part1);
part1=string(part1);


Jetzt hat auch erase funktioniert

Code:
todelete = ["[", "]", "," ,"signaltoken","no",":","value:","{","}","issignaltokencalculated","AUTHORIZED","signalname:null"];
part1= erase(part1,todelete);

Auch die richtigen Spalten kann ich löschen
Code:
keep = any(cellfun('isempty',part1), 1);
part1(:,keep) = [];


Ich habe damit erstmal die Dateigröße von 13 auf 3,5mB reduziert. Ich versuche jetzt erstmal die die Dateien alle so zu konvertieren.
Dann die Einzeldateien wieder in eine Variable packen und die Datentypen ändern (z.B. Datetime).

Jetzt komme ich weiter!

Ich Danke Dir für Deine Hilfe! Der hinweis auf erase hat mir geholfen die Zellformate nochmal zu überprüfen. Daran lag es...
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.