r - 获得与 R 中的两个变量相关的 x 的最大值
问题描述
在我的数据中
data=structure(list(v1 = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L),
v2 = c(1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L), x = c(10L,
1L, 2L, 3L, 4L, 3L, 2L, 30L, 3L, 5L)), .Names = c("v1", "v2",
"x"), class = "data.frame", row.names = c(NA, -10L))
有3个变量。我只需要获得与 X 相关的那些线,具有最大值。例如。取 v1 的第一个类别,并查看 v2 x 与哪个类别相关的最大值它是
v1=1 and v2=1 x=10
取 v1 的第二个类别,看看 v2 x 与哪个类别的最大值相关v1=2 ,v2=3 x=30
所以想要的输出
v1 v2 x
1 1 10
2 3 30
怎么做?
解决方案
这是使用的解决方案data.table
:
library(data.table)
setDT(data)
data[, .SD[which.max(x)], keyby = v1]
v1 v2 x
1: 1 1 10
2: 2 3 30
为了完整起见,一个丑陋的 base-R 解决方案:
t(sapply(split(data, data[["v1"]]), function(s) s[which.max(s[["x"]]),]))
v1 v2 x
1 1 1 10
2 2 3 30
推荐阅读
- c++ - std::unordered_map 无法使用 std::map 成功的父类型编译
- objectmapper - jackson 中的 ObjectMapper 错误(消息:没有从字符串值反序列化的字符串参数构造函数/工厂方法)
- java - SpringBoot - 关系的实体传播
- c# - 来自键盘 Unity 的 CZ 字符
- java - Android 无法使用自定义样式在微调器中居中文本
- r - 如何在 R 中写出不等式
- excel - 通过按 TAB 键在工作表上的 ActiveX 控件之间导航的 VBA 类模块
- node.js - Npm/Node 在 Windows 10 上的 WSL2 上的 Ubuntu 上获取“/usr/bin/env: node: No such file or directory”错误
- pandas - 在 Pandas 数据框中更快地返回比较?
- vue.js - 如何导出 figma 文件并立即在 figma 桌面应用程序或浏览器新标签页中打开它?