4Manuals

  • PDF Cloud HOME

如何通过字符变量在ddply中指定列名? Download

    RSQLite:如何增加列数和参数数? 使用plotstyle =“ ggplot”时,为什么在qqcomp函数中没有显示任何点? 如何测量时间序列功耗模式的变化性? 具有不存在点的四分之一圈ggplot-s 使用奇怪的结构构建列表(?) 从R中的数据帧读取值 使用broom :: augment函数和面板数据 如何以月-年格式获取日期? 向R中的函数添加可选参数 ggsurvplot:如何使检查标记仅出现在生存线上方

我有一个带有

的小标题/数据框
sample_id     condition     state
---------------------------------
sample1       case          val1
sample1       case          val2
sample1       case          val3
sample2       control       val1
sample2       control       val2
sample2       control       val3

该数据帧在for循环内针对不同状态生成。因此,每个数据框的状态列都有不同的名称。

我想按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 个答案:

答案 0 :(得分:1)

正如上面的camille所述,在dplyr中这更容易。基本语法(尚未解决您的问题):

my_df %>% 
  group_by(sample_id, condition) %>% 
  summarize(state = median(state))

请注意,语法将为每个唯一的sample_id-condition对提供值。在您的示例中这不是问题,因为每个sample_id都具有相同的condition,但要注意一点。

关于您的问题...对我来说还不太清楚,您打算如何将状态名称传递给您的计算。但是,您可以通过几种方式来处理此问题。一种是使用dplyr的“重命名”功能:

x <- "Massachusetts"
my_df %>% 
  rename(state = x) %>% 
  group_by(sample_id, condition) %>% 
  summarize(state = median(state))

(可能更合适的)方法是使用dplyr的“ tidyeval”语法编写函数:

myfunc <- function(df, state_name) {
  df %>% 
    group_by(sample_id, condition) %>% 
    summarize(state = median({{state_name}}))
}

myfunc(my_df, Massachusetts) # Note: Unquoted state name



Similar searches
    Django管理员-自动完成选择不会发出“更改”事件 具有文档矩阵的层次聚类 如何将我的代码转换为列表表达式 给定n个整数a1,a2,…,an。这些元素可以构成三角形的连续元素有几种选择方式? ShortcutManager.getPinnedShortcuts()在API 25上返回0