要提取每组数据帧的一列的最大值。
我在变量中有列名,我想按条件按组传递,但是失败。
我有以下数据框:
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
答案 0 :(得分:0)
您需要使用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
答案 1 :(得分:0)
我们可以使用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
注意:这篇文章会有很多骗子:=)