gpt4 book ai didi

r - 使用 dplyr 将行名称保留为 id

转载 作者:行者123 更新时间:2023-12-02 19:49:01 26 4
gpt4 key购买 nike

我得到了包含 20848 个条目的数据:

    V1           V2            V3           V4           V5           V6           V7           V8           V9           V10          V11          V12
1 0.023255814 0.1000000000 0.046511628 0.004651163 0.030232558 0.000000000 0.369767442 0.020930233 0.000000000 0.000000000 0.025581395 0.379069767
2 0.063750000 0.0112500000 0.001250000 0.105000000 0.120000000 0.522500000 0.005000000 0.000000000 0.005000000 0.002500000 0.163750000 0.000000000
3 0.026605505 0.3844036697 0.192660550 0.017431193 0.000000000 0.004587156 0.013761468 0.028440367 0.163302752 0.097247706 0.014678899 0.056880734
...

我在 R 中使用“tidyr”库从每一行中获取前 3 个 V# 数字,如下所示:

gather(as.data.frame(matrix), key = "Name", value = "Prob",factor_key = TRUE) %>% 
group_by(Name) %>%
top_n(n = 3)

得到这个结果:

   Name   Prob
<fct> <dbl>
1 V1 0.717
2 V1 0.682
3 V1 0.686
4 V2 0.756
5 V2 0.767
6 V2 0.817
7 V3 0.806
8 V3 0.871
9 V3 0.801
10 V4 0.779
# ... with 26 more rows

但我需要将行号保留为 id,以匹配来自遵循相同结构的另一个数据集的其他信息。我的意思是我想得到这样的结果:

   Name   Prob    row
<fct> <dbl>
1 V1 0.717 4151
2 V1 0.682 17
3 V1 0.686 3215
4 V2 0.756 17565
5 V2 0.767 13254
6 V2 0.817 3
7 V3 0.806 2135
8 V3 0.871 298
9 V3 0.801 4568
10 V4 0.779 542
# ... with 26 more rows

我知道这可能有点基础,但有人可以帮忙吗?

最佳答案

我使用 m 而不是 matrix 作为矩阵的名称,因为“matrix”是 R 中函数的名称。

此外,pivot_longer() 替换了 tidyr 中的 gather()

您可以在将数据转换为长格式之前使用 tibble::rownames_to_column()(但您需要先将矩阵转换为数据框,因为该函数仅适用于数据框):

m <- as.data.frame(m)

m %>%
tibble::rownames_to_column(var = "Row") %>%
pivot_longer(-Row, names_to = "Name", values_to = "Prob") %>%
group_by(Name) %>%
top_n(n = 3) %>%
select(c(2, 3, 1))

输出:

   Name     Prob Row  
<chr> <dbl> <chr>
1 V1 0.0233 1
2 V2 0.1 1
3 V3 0.0465 1
4 V4 0.00465 1
5 V5 0.0302 1
6 V6 0 1
7 V7 0.370 1
8 V8 0.0209 1
9 V9 0 1
10 V10 0 1
# … with 26 more rows

关于r - 使用 dplyr 将行名称保留为 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58651887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com