Как передать имя столбца в группе по переменной - PullRequest
2 голосов
/ 17 апреля 2019

Хотите извлечь максимальные значения столбца каждой группы фрейма данных.

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

У меня есть ниже фрейм данных:

df <- read.table(header = TRUE, text = 'Gene   Value
             A      12
             A      10
             B      3
             B      5
             B      6
             C      1
             D      3
             D      4')

Значения столбцов в Переменных ниже:

columnselected <- c("Value")
groupbycol <- c("Gene")

Мой код:

df %>% group_by(groupbycol) %>% top_n(1, columnselected)

Этот код дает ошибку.

  Gene   Value
   A        12
   B         6
   C         1
   D         4

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Мы можем использовать group_by_at и без использования дополнительного пакета

library(dplyr)
df %>%
   group_by_at(groupbycol) %>% 
   top_n(1, !! as.name(columnselected))
# A tibble: 4 x 2
# Groups:   Gene [4]
#  Gene  Value
#  <fct> <int>
#1 A        12
#2 B         6
#3 C         1
#4 D         4

ПРИМЕЧАНИЕ. Для этого поста было бы много дураков: =)

0 голосов
/ 17 апреля 2019

Вам необходимо преобразовать имена столбцов в символы, используя sym, а затем оценить их, используя !!

library(dplyr)

df %>% group_by(!!sym(groupbycol)) %>% top_n(1, !!sym(columnselected))

#  Gene  Value
#  <fct> <int>
#1 A        12
#2 B         6
#3 C         1
#4 D         4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...