【问题标题】:Creating function to calculate between 2 columns in dataframe selecting largest number in column创建函数来计算数据框中的两列之间选择列中的最大数字
【发布时间】:2017-11-12 11:14:10
【问题描述】:

在 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' 是计算出的最长长度的输出。

是否也可以使用函数选择每个“数字”中最大的“错误”?也许与上面的 Length 输出有类似的输出?

不太清楚如何解决这个问题。再次感谢任何帮助。

【问题讨论】:

    标签: r function dataframe calculated-columns


    【解决方案1】:

    我们可以使用data.table。将'data.frame'转换为'data.table'(setDT(df1)),按'ID'、'Number'分组,得到'end'、'start'的差值,找到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))
    

    【讨论】:

    • 谢谢,@akrun!我选择了第二个建议,因为我通过计算每个数字的 s.mean 的平均值来熟悉它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 2014-08-09
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多