gpt4 book ai didi

r - 将R中的大数据帧与每列中的多个整数分开,然后对整数求和

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

我在 R 中有一个数据框,我从一个文本文件中读入该数据框,该文件包含两列,每一列的每个值都有多个整数。我需要从另一列(结束)中的相应整数中减去一列(开始)中的相应整数。最后一步我最终想要得到的是将所有距离相加以获得每条轨道的总距离。下面的数据框只是一个示例,但所讨论的数据框每列大约有 20 个整数,并且有几十条轨道(行)。

对于轨道 A:(15-6)+(20-5)+(7-1)

track     StartDist         EndDist
A 1, 5, 6 7, 20, 15
B 1, 7, 8, 11 6, 21, 22, 25

我会使用函数 separate() 但每列的整数数量不同。我还考虑过重新制作数据框,每一行只包含一个整数,但我最终会得到成千上万的行,然后必须再次将它们组合回去以计算每条轨道的总数。有什么建议吗?

最佳答案

这是一个基本的 R 解决方案。我们使用 splittrack 对条目进行分组,然后使用自定义函数 splt 拆分 StartDist 列中的条目code>EndDist by ", ";然后,我们使用 mapply 计算成对差异,并在 sum.diff 列中返回所有成对距离的总和。

splt <- function(x) as.numeric(unlist(strsplit(as.character(x), ", ")))

df$sum.diff = sapply(split(df, df$track), function(x) {
start <- splt(x$StartDist);
end <- splt(x$EndDist);
sum(mapply(function(a, b) b - a, start, end)) });
df;
# track StartDist EndDist sum.diff
#1 A 1, 5, 6 7, 20, 15 30
#2 B 1, 7, 8, 11 6, 21, 22, 25 47

示例数据

df <- read.table(text =
"track StartDist EndDist
A '1, 5, 6' '7, 20, 15'
B '1, 7, 8, 11' '6, 21, 22, 25'", header = T)

关于r - 将R中的大数据帧与每列中的多个整数分开,然后对整数求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49807384/

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