r - 在函数中使用 Min 和 max 函数
问题描述
我创建了一个函数,它使用 2 个变量进行分组,并使用第三个变量为每个组创建最小值和最大值。但是 min 和 max 函数给出了错误的输出。它给出了整个数据集而不是每个组的最小值和最大值。
myfunction= function(x,a,b,column) {
temp=group_by(x,x[[a]],x[[b]])
Score=summarise(temp,Totals=n(),Mnscore=min(x[[c]]),Mxscore=max(x[[c]]))
return(Score)
}
myfunction(dataset,"a","b","c")
Actual Results:
a b Totals Min Max
1 1 10 15 50
1 2 20 15 50
1 3 30 15 50
Expected results:
a b Totals Min Max
1 1 10 20 48
1 2 20 21 49
1 3 30 15 50
解决方案
data.table
如果您想要一种非常有效的方法来解决您的问题,您可以使用该软件包。尝试以下最小的可重现示例。
library(data.table)
set.seed(20191011L)
data <- data.table(
V1 = letters[sample(3, 20, TRUE)],
V2 = letters[sample(3, 20, TRUE)],
V3 = runif(20)
)
fun <- function(data, groups, target){
data[, .(min=min(get(target)), max=max(get(target))), mget(groups)]
}
fun(data, c("V1", "V2"), "V3")
## V1 V2 min max
## 1: b c 0.20653948 0.4618063
## 2: a a 0.09560888 0.3347064
## 3: b b 0.75071480 0.7507148
## 4: c a 0.66410519 0.8258410
## 5: c c 0.01303751 0.7635212
## 6: a b 0.04770186 0.6332439
## 7: b a 0.25069813 0.9008885
推荐阅读
- pyspark - 有没有办法控制从 spark 数据帧创建的 hdfs 中的零件文件数量?
- python - 如何用 python 重写文件并获得正确的 git diff?
- windows - 维护批处理命令的顺序
- mongodb - 基于 schema.org 中的组件创建 MongoDB 模式
- c# - 如何使用 clickonce 部署带有 URL 的桌面应用程序
- python - Python MySQL中一个变量中的多个CREATE语句
- android - Android - 播放声音的应用程序列表
- r - 如何在 R 中获取命名 num 的名称?
- r - R:根据日期计算平均行数。tidyverse
- python - 将数据作为每行的列附加到文件(Python)