Teilen Sie die Daten nach Kriterium nach dem Zufallsprinzip in einen Trainings- und Testdatensatz mit R auf

Freitag,

Ich suche nach einer Möglichkeit, einen Datenrahmen nach dem Zufallsprinzip zu teilen (z. B. 90/10), um ein Modell zu testen und zu trainieren, wobei bestimmte Gruppierungskriterien eingehalten werden.

Stellen Sie sich vor, ich habe einen Datenrahmen wie diesen:

> test[1:20,]
                companycode     year    expenses         
    1                 C1          1     8.47720                 
    2                 C1          2     8.45250                 
    3                 C1          3     8.46280                 
    4                 C2          1 14828.90603                 
    5                 C3          1   665.21565                 
    6                 C3          2   290.66596                 
    7                 C3          3   865.56265                 
    8                 C3          4   6785.03586                
    9                 C3          5   312.02617                 
    10                C3          6   760.48740               
    11                C3          7  1155.76758                
    12                C4          1  4565.78313                 
    13                C4          2  3340.36540                 
    14                C4          3  2656.73030                 
    15                C4          4  1079.46098                 
    16                C5          1    60.57039                 
    17                C6          1  6282.48118                 
    18                C6          2  7419.32720                 
    19                C7          1   644.90571                 
    20                C8          1 58332.34945   

Ich versuche, diesen Datenrahmen anhand eines definierten Aufteilungskriteriums in ein Trainings- und ein Testset aufzuteilen. Mit den bereitgestellten Daten möchte ich die Daten so aufteilen, dass die Unternehmen nicht in beide Datenrahmen verwechselt werden. Datensatz 1 enthält andere Unternehmen als Datensatz 2.

Stellen Sie sich einen 90/10 Split vor, ein idealer Split würde so aussehen:

> data_90split

           companycode     year    expenses         

        4                 C2          1 14828.90603                                 
        12                C4          1  4565.78313                 
        13                C4          2  3340.36540                 
        14                C4          3  2656.73030                 
        15                C4          4  1079.46098                 
        16                C5          1    60.57039
        5                 C3          1   665.21565                 
        6                 C3          2   290.66596                 
        7                 C3          3   865.56265                 
        8                 C3          4   6785.03586                
        9                 C3          5   312.02617                 
        10                C3          6   760.48740               
        11                C3          7  1155.76758                 
        17                C6          1  6282.48118                 
        18                C6          2  7419.32720
        1                 C1          1     8.47720                 
        2                 C1          2     8.45250                 
        3                 C1          3     8.46280



 > data_10split
                    companycode     year   expenses
        20                C8          1 58332.34945 
        19                C7          1   644.90571  

Ich hoffe, ich habe deutlich darauf hingewiesen, wonach ich suche. Vielen Dank für Ihr Feedback.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage