【问题标题】:subset rows randomly in R by criteria按条件在R中随机子集行
【发布时间】:2020-06-04 11:34:12
【问题描述】:

我正在尝试根据其中一个列值将数据帧子集化为一个较小的数据帧,数据帧如下 head()

Experiment SRA_Sample              Sample_Name Grupo_analisis body_site
1  SRX567480  SRS626942 GTEX-111CU-0226-SM-5GZXC              1   Thyroid
2  SRX615964  SRS644174 GTEX-111FC-1026-SM-5GZX1              1   Thyroid
3  SRX563960  SRS625636 GTEX-111VG-0526-SM-5N9BW              3   Thyroid
4  SRX564185  SRS625665 GTEX-111YS-0726-SM-5GZY8              1   Thyroid
5  SRX559141  SRS624025 GTEX-1122O-0226-SM-5N9DA              1   Thyroid
6  SRX561718  SRS625313 GTEX-1128S-0126-SM-5H12S              1   Thyroid
         molecular_data_type    sex Group ShortName
1 Allele-Specific Expression   male   NIT 111CU_NIT
2              RNA Seq (NGS)   male   NIT 111FC_NIT
3              RNA Seq (NGS)   male   ELI 111VG_ELI
4 Allele-Specific Expression   male   NIT 111YS_NIT
5              RNA Seq (NGS) female   NIT 1122O_NIT
6 Allele-Specific Expression female   NIT 1128S_NIT

有3组ELI, NIT y SCI,我想每个类随机抽取10个样本。我正在尝试:

> set.seed(12)
> targets10<- filter(targets, targets$Group== ("NIT", "ELI", "SFI")) %>% sample_n(., 10)

or

>targets10<-filter(targets, targets$Group== "NIT","ELI","SFI") %>% sample_n(., 10)

给我以下错误: (~targets$Group == "NIT") & ~"ELI" 中的错误: 只能对数字、逻辑或复杂类型进行操作

有人可以帮我吗???

比你提前这么多

【问题讨论】:

  • 你需要使用filter(Group %in% ("NIT", "ELI", "SFI"))

标签: r dplyr subset


【解决方案1】:

尝试像这样重新格式化您的代码:

dplyr解决方案:

targets10 <- targets %>% 
  filter(Group %in% c("NIT", "ELI", "SFI")) %>% 
  sample_n(., 10)

base R解决方案:

targets10 <- subset(survey, Group %in% c("NIT", "ELI", "SFI"))
targets10 <- sample_n(targets10, 10)

编辑:

每组抽取10个样本,只需添加group_by

targets10 <- targets %>% 
  filter(Group %in% c("NIT", "ELI", "SFI")) %>% 
  group_by(Group) %>% 
  sample_n(., 10)

【讨论】:

  • 它运行,但它只过滤 1 个条件的 10 个结果,我需要每个条件 10 个,NIT/ELI/SFI 的 10 个......有什么想法吗?
  • 您只需要使用group_by - 见上文
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 2022-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多