在 R 中使用 tapply(dataframe, index, function) 作为函数 2 列的参数
Use tapply(dataframe , index, function) in R giving as argument to the function 2 columns
我想在数据框上使用 tapply() 函数,使用索引对行进行分组。我的问题是我要传递给函数的参数不是单个列,而是一对列。这是因为数据框的 2 列代表 x-y 点,它们是成对的。 运行 tapply(dataframe , indexes , function) 给我的错误是 indexes 的长度与 tapply 不同。我该如何解决这个问题?
谢谢!
如果要汇总的列不止一列,请使用 aggregate
而不是 tapply
(因为 tapply
适用于单个列)
aggregate(.~ indexes, transform(df1, indexes = indexes), FUN = yourfun)
或者另一种选择是by
by(df1, list(indexes), FUN = yourfun)
或者 tidyverse
可能更灵活
library(dplyr)
df1 %>%
group_by(indexes) %>%
summarise(across(c(x, y), yourfun), .groups = 'drop')
使用一个可重现的小例子
indexes = rep(1:2, c(3, 2))
by(mtcars[1:5, 1:5], indexes, FUN = sum)
我想在数据框上使用 tapply() 函数,使用索引对行进行分组。我的问题是我要传递给函数的参数不是单个列,而是一对列。这是因为数据框的 2 列代表 x-y 点,它们是成对的。 运行 tapply(dataframe , indexes , function) 给我的错误是 indexes 的长度与 tapply 不同。我该如何解决这个问题? 谢谢!
如果要汇总的列不止一列,请使用 aggregate
而不是 tapply
(因为 tapply
适用于单个列)
aggregate(.~ indexes, transform(df1, indexes = indexes), FUN = yourfun)
或者另一种选择是by
by(df1, list(indexes), FUN = yourfun)
或者 tidyverse
library(dplyr)
df1 %>%
group_by(indexes) %>%
summarise(across(c(x, y), yourfun), .groups = 'drop')
使用一个可重现的小例子
indexes = rep(1:2, c(3, 2))
by(mtcars[1:5, 1:5], indexes, FUN = sum)