5

いくつかの重複を含むデータフレームがあります。重複がある 2 つの列の行を合計してから、不要な行を削除したいと考えています。

これがデータの例です。

Year    ID  Lats     Longs      N   n   c_id
2015    200 30.5417 -20.5254    150 30  4142
2015    200 30.5417 -20.5254    90  50  4142

列 N と n を合計して 1 行にしたいと考えています。残りの情報、つまり Lats 、 Longs 、 ID 、および Year は同じままです。

Year    ID  Lats    Long        N   n   c_id
2015    200 30.5417 -20.5254    240 80  4142
4

1 に答える 1

5

を使用したソリューションdata.table:

require(data.table)
df <- structure(list(year = c(2015, 2015), ID = c(200, 200), Lats = c(30.5417, 
            30.5417), Longs = c(-20.5254, -20.5254), N = c(150, 90), n = c(30, 
            50), c_id = c(4142, 4142)), .Names = c("year", "ID", "Lats", 
            "Longs", "N", "n", "c_id"), row.names = c(NA, -2L), 
            class = "data.frame")
dt <- data.table(df)
dt[, lapply(.SD, sum), by="c_id,year,ID,Lats,Longs"]

   c_id year  ID    Lats    Longs   N  n
1: 4142 2015 200 30.5417 -20.5254  240 80

を使用したソリューションplyr:

require(plyr)
ddply(df, .(c_id, year, ID, Lats, Longs), function(x) c(N=sum(x$N), n=sum(x$n)))

  c_id year  ID    Lats    Longs   N  n
1 4142 2015 200 30.5417 -20.5254 240 80
于 2013-01-04T07:35:21.157 に答える