在r中以第二行开始聚合

时间:2018-01-20 11:51:11

标签: r aggregate

我想将聚合函数用于多个列,并且效果很好。

唯一的问题是我希望它从每列的第二行开始进行计算,忽略每列的标题。

这是我的功能:

agg <- aggregate(list(museNumeric$Delta_TP9, museNumeric$Delta_AF7, museNumeric$Delta_AF8, museNumeric$Delta_TP10), by = list(museNumeric$intTimestamp), median)

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您似乎想要执行此操作data.frame,请将其称为df。这是data.table方法:

library(data.table)
dt <- as.data.table(df)


d[2:nrow(dt), list(new_value = median(column_name)), by = list(intTimestamp)]

您可以使用nrow(dt)代替.N.()代替list(),如下例所示,使用mtcars

dt <- as.data.table(mtcars)
dt[2:.N, .(new_disp = mean(disp)), by = .(gear)]

   gear new_disp
1:    4      225
2:    3      225
3:    5      225

您可以将多个功能应用于多个列(它们不必全部为mean并按多列聚合(订单事项):

> dt[2:.N, list(new_disp = mean(disp), median_carb = median(carb)), by = list(gear, cyl)]
   gear cyl new_disp median_carb
1:    4   6      225           2
2:    4   4      225           2
3:    3   6      225           2
4:    3   8      225           2
5:    3   4      225           2
6:    5   4      225           2
7:    5   8      225           2
8:    5   6      225           2

答案 1 :(得分:0)

如前所述,您需要列标题为名称。 此外,您应该使用数据框(R中的通用结构)。

# this is a data.frame
df <- data.frame(
    a = 1:10
    , b = 11:20
    , c = 21:30
)

我认为初学者最简单的方法就是&#34; tidyverse&#34;其中包含几个包:

library(tidyverse)

在这里你可以......

df %>%
    summarise_all(median)

...转换为

take the dataframe (df) then (%>%)
    apply a function (median) to all columns (summarise_all)