首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用fct_relevel排序交互级别

使用fct_relevel排序交互级别
EN

Stack Overflow用户
提问于 2021-08-31 19:15:03
回答 1查看 51关注 0票数 1

我有一个为基因型(gen = "WT")和治疗(treat = "saline")提供参考水平的2×2设计。我正在尝试重用代码,而不是硬编码我的级别(我的WT将始终是引用级别,而不管我使用的是什么其他基因型)。这里是我的数据集的一个玩具例子。

代码语言:javascript
复制
library(tidyverse)
toy1 <- tidyr::expand_grid(
  gen = c("WT", "QQ"),
  treat = c("saline", "ab")
)

toy1 %>% 
  mutate(gen = fct_relevel(gen, reference="WT"),
         treat = fct_relevel(treat, reference="saline"),
         inter = interaction(gen, treat)) %>% 
  pull(inter)

这给了我

代码语言:javascript
复制
[1] WT.saline WT.ab     QQ.saline QQ.ab    
Levels: WT.saline QQ.saline WT.ab QQ.ab

这是接近的,但是我想要的输出应该是

代码语言:javascript
复制
[1] WT.saline WT.ab     QQ.saline QQ.ab    
Levels: WT.saline WT.ab QQ.saline QQ.ab

在这种情况下,tibble和级别的顺序是相同的,但不能认为这是理所当然的,而levels(inter)才是我关心的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-31 19:18:52

我们可以用lex.order成为TRUE in interaction

代码语言:javascript
复制
toy1 %>% 
  mutate(gen = fct_relevel(gen, reference="WT"),
         treat = fct_relevel(treat, reference="saline"),
         inter = interaction(gen, treat, lex.order = TRUE)) %>% 
  pull(inter)

-output

代码语言:javascript
复制
[1] WT.saline WT.ab     QQ.saline QQ.ab    
Levels: WT.saline WT.ab QQ.saline QQ.ab

或者,我们可以在末尾添加一个factor,其中levels指定为unique值。

代码语言:javascript
复制
toy1 %>% 
  mutate(gen = fct_relevel(gen, reference="WT"),
         treat = fct_relevel(treat, reference="saline"), 
          inter = interaction(gen, treat), 
          inter = factor(inter, levels = unique(inter))) %>% 
  pull(inter)

-output

代码语言:javascript
复制
[1] WT.saline WT.ab     QQ.saline QQ.ab    
Levels: WT.saline WT.ab QQ.saline QQ.ab
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69004221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档