Ich frage mich datatable
verwenden, wie ich die Kombination von "special-symbols"
kann die erste Reihe und ihre entsprechenden Zeilennummern bekommen (in der Referenz) in einem Datensatz für jede group
?R: von in Datentabelle Gruppierung, erhalten die erste Zeile und ihre entsprechenden Zeilennummern für jede Gruppe
als Beispiel:
Library(data.table)
copy(mtcars) -> mt
setDT(mt) -> mt
die erste Zeile jeder Gruppe erhält für cyl
:
mt[, .SD[1], by = cyl]
cyl mpg disp hp drat wt qsec vs am gear carb
1: 6 21.0 160 110 3.90 2.62 16.46 0 1 4 4
2: 4 22.8 108 93 3.85 2.32 18.61 1 1 4 1
3: 8 18.7 360 175 3.15 3.44 17.02 0 0 3 2
die Zeilennummer in mt erhalten, die jede Gruppe auf cyl
basierend entsprechen:
mt[, .I[1], by = cyl]
cyl V1
1: 6 1
2: 4 3
3: 8 5
die erwartete Ausgabe:
cyl mpg disp hp drat wt qsec vs am gear carb row_N
1: 6 21.0 160 110 3.90 2.62 16.46 0 1 4 4 1
2: 4 22.8 108 93 3.85 2.32 18.61 1 1 4 1 3
3: 8 18.7 360 175 3.15 3.44 17.02 0 0 3 2 5
Ich habe versucht, die folgenden ein, aber nicht erfolgreich war:
mt[, .SD[1], by= cyl][mt[, .I[1], by=cyl]]
mt[, .SD[1], by= cyl][mt[, `:=` (row_N = .I[1], by=cyl)]]
jede Hilfe mit Erklärung wird hoch geschätzt.
Oder einfach 'c' statt 'cbind' seit' c (Liste (1), 2) 'gibt eine Liste, die auf Spalten übersetzt werden. – thelatemail