簡體   English   中英

R 中每行的前 3 個值

[英]Top 3 Values Per Row in R

我的 dataframe 設置是:

ID Var1 Var2 Var3... Var50

每行的變量總和為 1。 我一直在嘗試獲得前 3 個變量。

ID 1st 2nd 3rd

按 ID 分組並使用 top_n() 會起作用嗎?

如果是按行,那么我們可以使用apply

t(apply(df1[-1], 1, function(x) head(sort(-x), 3)))

或者使用pmap返回每行 3 個值的list

library(purrr)
library(dplyr)
df1 %>%
    mutate(top3 = select(., -ID) %>% pmap(~ head(sort(-c(...)), 3)))

如果我們想使用top_n ,一種選擇是重塑為“長”格式

library(tidyr)
df1 %>% 
    pivot_longer(cols = -ID) %>%
    group_by(ID) %>%
    top_n(3, value)

使用data.table您可以將數據重新整形為長格式, select 按組(“ID”)的三個最大值

library(data.table)
df_long <- melt(df1, id.vars = "ID")[order(ID, desc(value))]
df_long[,.SD[1:3], by = "ID"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM