gpt4 book ai didi

R中数据的行比较

转载 作者:行者123 更新时间:2023-12-04 11:00:54 27 4
gpt4 key购买 nike

我有一个包含起点-终点数据和一些相关变量的数据集。它看起来像这样:

    "Origin","Destination","distance","volume"
"A01" "A01" 0.0 10
"A02" "A01" 1.2 9
"A03" "A01" 1.4 15
"A01" "A02" 1.2 16

然后对于每个起点-终点对,我希望能够根据该行和选定的其他行中的数据计算其他变量。例如,前往该目的地的其他起始区域有多少流量大于焦点对。在这个例子中,我最终会得到目的地 A01 的以下内容。
    "Origin","Destination","distance","volume","greater_flow"
"A01" "A01" 0.0 10 1
"A02" "A01" 1.2 9 2
"A03" "A01" 1.4 15 0

我一直在尝试与 group_by 一起解决问题和 apply但无法弄清楚如何 a)“修复”我想用作引用的数据(从 A01 到 A01 的卷)和 b) 将比较仅限于具有相同目标 (A01) 的数据和 c) 重复所有起点-终点对。

最佳答案

这是使用基础 R 的答案(使用 apply ):

d <- data.frame(Origin = c("A01", "A02", "A03", "A01"), Destination = c("A01", "A01", "A01", "A02"), distance = c(0.0, 1.2, 1.4, 1.2), volume = c(10, 9, 15, 16))

# extracting entries with destination = A01
d2 <- d[d[, "Destination"] == "A01", ]

# calculating number of rows satisfying your condition
greater_flow <- apply(d2, 1, FUN = function(x) max(sum(x['volume'] < d2[, 'volume']) - 1, 0) )

# sticking things back together
data.frame(d2, greater_flow)

# Origin Destination distance volume greater_flow
# 1 A01 A01 0.0 10 1
# 2 A02 A01 1.2 9 2
# 3 A03 A01 1.4 15 0

如果您需要对所有可能的目的地进行计算,您可以循环访问 unique(d[, "Destination"]) :
 lapply(unique(d[, "Destination"]), FUN = function(dest){
d2 <- d[d[, "Destination"] == dest, ]
greater_flow <- apply(d2, 1, FUN = function(x) max(sum(x['volume'] < d2[, 'volume']) - 1, 0) )

data.frame(d2, greater_flow)
})

如果需要,您可以通过 do.call(rbind, output) 将输出粘合在一起.

关于R中数据的行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33238617/

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