gpt4 book ai didi

r - 计算一行中第一个和最后一个观察值之间的差异,其中每行都不同

转载 作者:行者123 更新时间:2023-12-03 01:52:32 25 4
gpt4 key购买 nike

我的数据如下所示:

  Region X2012 X2013 X2014 X2015 X2016 X2017
1 1 10 11 12 13 14 15
2 2 NA 17 14 NA 23 NA
3 3 12 18 18 NA 23 NA
4 4 NA NA 15 28 NA 38
5 5 14 18.5 16 27 25 39
6 6 15 NA 17 27.5 NA 39

这里的数字无关紧要,但我想做的是取每行中最早和最新观察点之间的差异,为差异创建一个新列,其中:

Region              Diff
1 (15 - 10) = 5
2 (23 - 17) = 6

依此类推,实际上不显示减法,而是显示最终结果。理想情况下,我只是从 2012 列中减去 2017 列,但由于任何行的第一次观察都可以从任何列开始,也可以在任何列结束,我不确定如何计算差异。

dplyr 解决方案将是理想的,但任何解决方案都值得赞赏。

最佳答案

定义一个函数,将其向量参数的最后一个元素减去第一个元素(省略 NA)并将其应用于每一行。

lastMinusFirst <- function(x, y = na.omit(x)) tail(y, 1) - y[1]
transform(DF, diff = apply(DF[-1], 1, lastMinusFirst))

给予:

  Region X2012 X2013 X2014 X2015 X2016 X2017 diff
1 1 10 11.0 12 13.0 14 15 5
2 2 NA 17.0 14 NA 23 NA 6
3 3 12 18.0 18 NA 23 NA 11
4 4 NA NA 15 28.0 NA 38 23
5 5 14 18.5 16 27.0 25 39 25
6 6 15 NA 17 27.5 NA 39 24

注意

可重现形式的输入:

Lines <- "Region X2012 X2013 X2014 X2015 X2016 X2017
1 1 10 11 12 13 14 15
2 2 NA 17 14 NA 23 NA
3 3 12 18 18 NA 23 NA
4 4 NA NA 15 28 NA 38
5 5 14 18.5 16 27 25 39
6 6 NA NA NA NA NA NA"
DF <- read.table(text = Lines)

更新

已修复。

关于r - 计算一行中第一个和最后一个观察值之间的差异,其中每行都不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57437497/

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