r - 获取数据框中最接近第一行的 top_n 行

标签 r

我想我问过专家 - 抱歉,这更像是一个代码审查问题,但我在下面添加了它。以下代码是否可以获取最接近第一行的 top_n 个案例 - 忽略第一行:

example_df <- data.frame(
                  gender = c("male", "male", "female", "male")
                , age = c(30, 30.1, 20, 31)
              )
example_df

gower_dist <- as.matrix(daisy(example_df, metric = "gower"))
gower_dist

top_n <- 2

# select top 2 closest row indices of row 1
example_df[head(order(gower_dist[-1, 1]), top_n) + 1,]

我也试图让它在第 3 行工作,但这不起作用:

example_df[head(order(gower_dist[-3, 3]), top_n) + 1,]

如有任何反馈,我们将不胜感激。谢谢!

附言:

距离度量:

            1           2         3          4
1 0.000000000 0.004545455 0.9545455 0.04545455
2 0.004545455 0.000000000 0.9590909 0.04090909
3 0.954545455 0.959090909 0.0000000 1.00000000
4 0.045454545 0.040909091 1.0000000 0.00000000

最佳答案

diag 设置为 NA 将使子集化更容易。

diag(gower_dist)  <- NA
example_df[head(order(gower_dist[, 1]), top_n),]
#  gender  age
#2   male 30.1
#4   male 31.0

example_df[head(order(gower_dist[, 3]), top_n),]
#  gender  age
#1   male 30.0
#2   male 30.1

您使用 gower_dist[-3, 3] 删除了第 3 列,但 order 仍然为您提供从 1 到 3 的值,而不是 1,2 和 4。

关于r - 获取数据框中最接近第一行的 top_n 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59378274/

相关文章:

r - 快速评估公式的方法?

r - 将不相关/相似的观察结果合并为一个(其他)

r - 使用ggplot在pdf输出文件的单独页面上绘制每个图形

r - R 中 svm 特征选择的示例

r - 并排打印矩阵和向量

r - 在图论中解释社区结构

r - 在 x 轴上的离散组之间添加刻度

r - 使用 MICE 进行多重插补后,如何在 R 中的子集上使用 lm() 运行线性回归

r - 使用 gsub 的互补序列

R:对分组变量的每个成对组合进行 t 检验,对 ID 变量中的每个元素进行