Получение 10 лучших значений по столбцам в списке фреймов данных R - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть список структур данных с неравными столбцами и длинами строк, и я хотел бы извлечь только верхние 10 элементов из каждого столбца как можно быстрее.

Пример:

ex1 = data.frame(a = 1:20, b = 31:40)
ex2 = data.frame(a = 1:100)
ex3 = data.frame()
list = c()
list[[1]] = ex1; list[[2]] = ex2; list[[3]] = ex3

Выходными данными должен быть список фреймов данных, содержащий только верхние и нижние 10 значений каждого столбца.Для ex1 это будет выглядеть как фрейм данных со столбцами a и b.a будет иметь 1-10 и 10-20, список [[2]] будет содержать фрейм данных с элементами 1:10 и 90: 100, а список [[3]] будет пустым.

Спасибо.

1 Ответ

0 голосов
/ 21 сентября 2018

Один из вариантов - использовать head и tail и связывать соответствующие строки

lapply(list, function(x) rbind(head(x, 10), tail(x, 10)))
#[[1]]
#    a  b
#1   1 31
#2   2 32
#3   3 33
#4   4 34
#5   5 35
#6   6 36
#7   7 37
#8   8 38
#9   9 39
#10 10 40
#11 11 31
#12 12 32
#13 13 33
#14 14 34
#15 15 35
#16 16 36
#17 17 37
#18 18 38
#19 19 39
#20 20 40
#
#[[2]]
#      a
#1     1
#2     2
#3     3
#4     4
#5     5
#6     6
#7     7
#8     8
#9     9
#10   10
#91   91
#92   92
#93   93
#94   94
#95   95
#96   96
#97   97
#98   98
#99   99
#100 100
#
#[[3]]
#data frame with 0 columns and 0 rows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...