gpt4 book ai didi

R合并具有相似值的行

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

我有一个数据框,行值首先从小到大排序。我计算相邻行之间的行值差异,合并具有相似差异(例如,小于 1)的行,并返回合并行的平均值。我可以用 for 循环检查每一行的差异,但似乎是一种非常低效的方法。有更好的主意吗?谢谢。

library(dplyr)
DF <- data.frame(ID=letters[1:12],
Values=c(1, 2.2, 3, 5, 6.2, 6.8, 7, 8.5, 10, 12.2, 13, 14))
DF <- DF %>%
mutate(Diff=c(0, diff(Values)))

DF 的预期输出是

ID        Values
a 1.0
b/c 2.6 # (2.2+3.0)/2
d 5.0
e/f/g 6.67 # (6.2+6.8+7.0)/3
h 8.5
i 10.0
j/k 12.6 # (12.2+13.0)/2
i 14.0

最佳答案

这是一个带有data.table的选项

library(data.table)
setDT(DF)[, .(ID = toString(ID), Values = round(mean(Values), 2)),
by = .(Diff = cumsum(c(TRUE, diff(Values)>=1)))][, -1, with = FALSE]
# ID Values
#1: a 1.00
#2: b, c 2.60
#3: d 5.00
#4: e, f, g 6.67
#5: h 8.50
#6: i 10.00
#7: j, k 12.60
#8: l 14.00

关于R合并具有相似值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50312514/

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