Ich habe folgende Datentabelle:einschließen Spalten für die Berechnung nicht in data.table Ergebnis verwendet
id user V1 V2 V3 V4
1: 1 1 1 1 1 0
2: 1 2 4 1 3 1
3: 1 3 0 1 6 0
4: 2 1 1 0 2 1
5: 2 2 2 1 0 0
und I führt eine lapply Gruppe von ID-Berechnung:
my_data[,lapply(.SD,mean)*.SD,by=id,.SDcols=3:5]
Das Ergebnis ist die folgende :
id V1 V2 V3
1: 1 1.666667 1.0 3.333333
2: 1 6.666667 1.0 10.000000
3: 1 0.000000 1.0 20.000000
4: 2 1.500000 0.0 2.000000
5: 2 3.000000 0.5 0.000000
gibt es eine einfache Datentabelle Art und Weise die Spalte Benutzer enthalten aus der ursprünglichen Datentabelle? Ich habe es geschafft, es zu tun mit
cbind(my_data[,.(user)], my_data[,lapply(.SD,mean)*.SD,by=id,.SDcols=3:5])
aber ich hoffe wirklich, es ist ein schöner Weg
das funktioniert danke! Aber ich hätte gerne die Option 1 Den ursprünglichen Datensatz nicht zu ändern und 2 nur einige Spalten hinzuzufügen und nicht alle –
@ George91 Da Sie nach einer effizienten Methode suchen, können Sie möglicherweise eine Kopie der Daten erstellen zB 'my_data1 <- my_data' und dann die Änderungen in den' my_data'. Die Zuweisung (': =') wäre schnell im Vergleich zu 'cbind' usw. – akrun