r - R:找到列之间的最小差异并返回平均值
问题描述
假设我有一个数据集:
ID resid1 resid2 resid3
A 0,5 0,2 -0,2
B 0,1 -0,3 0,2
C 0,4 -0,1 0,1
D 0,3 0 0,2
E 0,1 0,6 -0,8
我想找到值差异最小的两列,然后在单独的对象中返回这两列的平均值。结果应该是这样的:
ID mean
A 0,35
B 0,15
C 0
D 0,25
E 0,35
非常感谢任何协助。我只是不知道该怎么做(尽管我确信有几种简单的方法可以解决这个问题)。
解决方案
这是一个基本的 R 解决方案
dfout <- cbind(
df[1],
mean = apply(df[-1], 1, function(v) {
vs <- sort(v)
ind <- which.min(diff(vs))
mean(vs[ind + 0:1])
})
)
这使
> dfout
ID mean
1 A 0.35
2 B 0.15
3 C 0.00
4 D 0.25
5 E 0.35
数据
> dput(df)
structure(list(ID = c("A", "B", "C", "D", "E"), resid1 = c(0.5,
0.1, 0.4, 0.3, 0.1), resid2 = c(0.2, -0.3, -0.1, 0, 0.6), resid3 = c(-0.2,
0.2, 0.1, 0.2, -0.8)), row.names = c(NA, -5L), class = "data.frame")
推荐阅读
- python - 尝试使用 Python 使用 Protobuf 序列化 Google NLP API 响应时出错
- pandas - 循环遍历数据框中的列以按类别生成直方图
- directory - Python 3.x:从不同目录中的文件导入函数、配置字典等
- java - 如果我的子类也有不同的方法怎么办?
- python-3.x - 使用带有会话的 Python 请求登录网站
- mongodb - 对于这样的查询,什么索引是有效的:FieldA <= xxx AND FieldB >= xxx
- python - python 3 是否在语义上版本化并向前兼容
- c# - 在 Microsoft Graph API 中查找特定用户的组名的问题
- r - 在具有集群数据的 R 中,当重复选择集群时,您将如何在集群级别引导并保持相同的观察?
- python - 另一个正则表达式字符串匹配