Храните наиболее часто встречающиеся столбцы в data.frame - PullRequest
0 голосов
/ 04 февраля 2020

Имея такой data.frame:

data.frame(id = c(1,2,3), stock = c(3,1,4), bill = c(1,0,1), bear = c(3,2,5))

Как можно суммировать все столбцы с ожидаемым столбцом id и сохранить первые два столбца с более высокой частотой.

Пример ожидаемый результат

data.frame(id = c(1,2,3), stock = c(3,1,4), bear = c(3,2,5))

Ответы [ 2 ]

3 голосов
/ 04 февраля 2020

В базе R мы можем использовать colSums для суммирования столбцов, sort их и выбрать имя 2 столбцов с самым высоким значением, используя tail.

cbind(df[1], df[names(tail(sort(colSums(df[-1])), 2))])

#  id stock bear
#1  1     3    3
#2  2     1    2
#3  3     4    5
2 голосов
/ 04 февраля 2020

Другая base R возможность может быть:

cbind(df[1], df[-1][rank(-colSums(df[-1])) %in% 1:2])

  id stock bear
1  1     3    3
2  2     1    2
3  3     4    5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...