r语言 - 创建函数以在数据框中的 2 列之间计算,选择列中的最大数字



R和编程方面,我是新手,所以任何帮助将不胜感激。我有一个大型数据集,其中包含许多行,其中包含 100 多个不同的 ID。每个"ID"有4个数字。每个"数字"有 5 条记录。

     ID Number     start       end   s.mean  Error
1   A2    1        61735  23342732   0.0314  2.04
2   A2    1     23345569  54962669  -0.0103  1.98
3   A2    1     54963958  55075062   0.4841  2.79
4   A2    1     55085141  65826284   0.0047  2.00
5   A2    1     65826928 115611498  -0.0241  1.96
6   A2    2        12784  17248573  -0.0037  1.99
7   A2    2     17248890  85480817  -0.0331  1.95
8   A2    2     85481399  89121495   0.0153  2.02
9   A2    2     89122081  89417610   0.3708  2.58
10  A2    2     89418929  89999062  -0.1826  1.76
11  A2    3    162626603 185477402  -0.0759  1.89
12  A2    3    185478957 189050664   0.0080  2.01
13  A2    3    189056732 192873807  -0.0985  1.86
14  A2    3    192874747 192882903   0.9053  3.74
15  A2    3    192886435 197896118  -0.0645  1.91
16  A3    1        61735  23342732   0.0314  2.04
17  A3    1     23345569  54962669  -0.0103  1.98
18  A3    1     54963958  55075062   0.4841  2.79
19  A3    1     55085141  65826284   0.0047  2.00
20  A3    1     65826928 115611498  -0.0241  1.96

我想知道是否可以创建一个函数来从每条记录的"结束"中减去"开始",以确定每个"数字"中哪个最长。我希望输出例如...

    ID   Number   Length 
1   A2    1       xxxxxx
2   A2    2       xxxxxx
3   A2    3       xxxxxx
4   A3    1       xxxxxx

其中"xxxxxx"是计算的最长长度的输出。

是否也可以使用函数选择每个"数字"中最大的"误差"?也许具有与上面的长度输出相似的输出?

不太确定如何解决这个问题。同样,任何帮助将不胜感激。

我们可以使用data.table . 将"data.frame"转换为"data.table"(setDT(df1)(,按"ID","数字"分组,得到"结束","开始"的差值并找到max

library(data.table)
setDT(df1)[, .(Length = max(end - start)), .(ID, Number)]

或与dplyr

library(dplyr)
df1 %>%
    group_by(ID, Number) %>%
    summarise(Length = max(end - start))

最新更新