R中每行前3个值
我的数据帧设置为:R中每行前3个值,r,dataframe,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个值的列表列 library(purrr) library(dplyr) df1 %>% mutate(top3 = se
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个值的列表
列
library(purrr)
library(dplyr)
df1 %>%
mutate(top3 = select(., -ID) %>% pmap(~ head(sort(-c(...)), 3)))
如果我们想使用
top\n
,一个选项是将格式改为“long”
library(tidyr)
df1 %>%
pivot_longer(cols = -ID) %>%
group_by(ID) %>%
top_n(3, value)
如果是按行,那么我们可以使用
apply
t(apply(df1[-1], 1, function(x) head(sort(-x), 3)))
或者使用
pmap
返回每行3个值的列表
列
library(purrr)
library(dplyr)
df1 %>%
mutate(top3 = select(., -ID) %>% pmap(~ head(sort(-c(...)), 3)))
如果我们想使用
top\n
,一个选项是将格式改为“long”
library(tidyr)
df1 %>%
pivot_longer(cols = -ID) %>%
group_by(ID) %>%
top_n(3, value)
使用
data.table
可以将数据重塑为长格式,并按组(“ID”)选择三个最大值
库(data.table)
df_long带有数据。表格您可以将数据重塑为长格式,并按组(“ID”)选择三个最大值
库(data.table)
德福朗