Gegeben ein Datenrahmen Ich versuche, von Long-to-Wide mit der dcast.data.table
Funktion von library(data.table)
zu werfen. Wenn Sie jedoch große numerische Werte auf der linken Seite der Formel verwenden, werden einige kombiniert.Fehler mit großen Zahlen in dcast.data.table
Unten ist ein Beispiel:
df <- structure(list(A = c(10000000007624, 10000000007619, 10000000007745,
10000000007624, 10000000007767, 10000000007729, 10000000007705,
10000000007711, 10000000007784, 10000000007745, 10000000007624,
10000000007762, 10000000007762, 10000000007631, 10000000007762,
10000000007619, 10000000007628, 10000000007705, 10000000007762,
10000000007624, 10000000007745, 10000000007706, 10000000007767,
10000000007777, 10000000007624, 10000000007745, 10000000007624,
10000000007777, 10000000007771, 10000000007631, 10000000007624,
10000000007640, 10000000007642, 10000000007708, 10000000007711,
10000000007745, 10000000007767, 10000000007655, 10000000007722,
10000000007745, 10000000007762, 10000000007771, 10000000007617
), B = c(4060697L, 7683673L, 7699192L, 1322422L, 7754939L, 7448486L,
2188027L, 1061376L, 2095950L, 7793530L, 2095950L, 6447861L, 2188027L,
7448451L, 7428427L, 7516354L, 7067801L, 2095950L, 6740142L, 405911L,
4057215L, 1061345L, 7754945L, 7501748L, 2188027L, 7780980L, 6651988L,
6649330L, 6655118L, 6556367L, 6463510L, 2347462L, 7675114L, 6556361L,
1061345L, 7224099L, 6463515L, 2188027L, 6463515L, 7311234L, 7764971L,
7224099L, 2347479L), C = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L,
3L, 3L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 25L, 2L, 1L, 2L,
1L, 1L, 1L)), .Names = c("A", "B", "C"), row.names = c(NA, -43L
), class = "data.frame")
df <- as.data.table(df)
output <- dcast.data.table(df, A ~ B, value.var = "C",
fun.aggregate = sum, fill = NA)
Dies wird nur 2 Reihen erzeugen, 10000000007624
& 10000000007784
und alles wird in nur diesen beiden zusammengefaßt werden.
Dieser Fehler tritt nicht auf, wenn die Funktion reshape2::dcast
verwendet wird, diese Methode liefert das korrekte Ergebnis.
Gibt es einen Grund, warum dcast.data.table
diesen Fehler produziert?
Überprüfen Sie, ob dies auch mit der Entwicklungsversion geschieht. Wenn es einen Fehlerbericht eingibt. Als Workaround können Sie 'A' zum Zeichen zwingen. – Roland
@Roland-Problem tritt auch bei der Entwicklungsversion auf und hat ein Ticket ausgelöst. Ich habe festgestellt, dass 'data.table :: dcast()' funktioniert jedoch wie erwartet. – amwill04
Ich habe in Ihrer Ausgabe auf github Feedback gegeben, bitte zögern Sie nicht, die Frage selbst zu beantworten. – jangorecki