我有一个带有 该数据帧在for循环内针对不同状态生成。因此,每个数据框的状态列都有不同的名称。 我想按 我正在尝试下面的命令;如果给定列名,那是可行的,但我无法通过状态字符变量传递名称。我尝试了 答案 0 :(得分:1) 正如上面的camille所述,在dplyr中这更容易。基本语法(尚未解决您的问题): 请注意,语法将为每个唯一的 关于您的问题...对我来说还不太清楚,您打算如何将状态名称传递给您的计算。但是,您可以通过几种方式来处理此问题。一种是使用dplyr的“重命名”功能: (可能更合适的)方法是使用dplyr的“ tidyeval”语法编写函数:sample_id condition state
---------------------------------
sample1 case val1
sample1 case val2
sample1 case val3
sample2 control val1
sample2 control val2
sample2 control val3
sample_id
对数据进行分组并计算状态列的中位数,以使每个唯一的sample_id
都有一个中位数。输出应如下所示……sample_id condition state
---------------------------------
sample1 case median
sample2 control median
ensym(state)
和!!ensym(state)
,但它们都引发了错误。ddply(dat_state, .(sample_id), summarize, condition=unique(condition), state_exp=median(ensym(state)))
1 个答案:
my_df %>%
group_by(sample_id, condition) %>%
summarize(state = median(state))
sample_id
-condition
对提供值。在您的示例中这不是问题,因为每个sample_id
都具有相同的condition
,但要注意一点。x <- "Massachusetts"
my_df %>%
rename(state = x) %>%
group_by(sample_id, condition) %>%
summarize(state = median(state))
myfunc <- function(df, state_name) {
df %>%
group_by(sample_id, condition) %>%
summarize(state = median({{state_name}}))
}
myfunc(my_df, Massachusetts) # Note: Unquoted state name