gpt4 book ai didi

r - 检查重复项,求和并在求和后删除一行

转载 作者:行者123 更新时间:2023-12-04 12:07:06 25 4
gpt4 key购买 nike

我有一个包含一些重复项的数据框。我想对有重复的两列的行求和,然后删除不需要的行。

这是数据的一个例子,

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 合并为一行。其余信息,即 Lats 、 Longs 、 ID 和 Year 保持不变,例如,
Year    ID  Lats    Long        N   n   c_id
2015 200 30.5417 -20.5254 240 80 4142

最佳答案

使用 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

关于r - 检查重复项,求和并在求和后删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14152971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com