我想将聚合函数用于多个列,并且效果很好。
唯一的问题是我希望它从每列的第二行开始进行计算,忽略每列的标题。
这是我的功能:
agg <- aggregate(list(museNumeric$Delta_TP9, museNumeric$Delta_AF7, museNumeric$Delta_AF8, museNumeric$Delta_TP10), by = list(museNumeric$intTimestamp), median)
感谢您的帮助!
答案 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)