程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了R:根据行数据过滤大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决R:根据行数据过滤?

开发过程中遇到R:根据行数据过滤的问题如何解决?下面主要结合日常开发的经验,给出你关于R:根据行数据过滤的解决方法建议,希望对你解决R:根据行数据过滤有所启发或帮助;

我有一个这样的数据框-

df <- structure(List(category = c("A","A","B","C","D","D"),Subcategory = c("A_1","A_2","A_3","B_1","B_2","C_1","C_2","D_3","D_4"),Option = c("Q1","Q2","Q3","Q4","Q5","Q6","Q7","Q8","Q9")),row.names = c(NA,-9L),class = c("tbl_df","tbl","data.frame"))

df 的结果:

  category Subcategory Option
1        A         A_1     Q1
2        A         A_2     Q2
3        A         A_3     Q3
4        B         B_1     Q4
5        B         B_2     Q5
6        C         C_1     Q6
7        C         C_2     Q7
8        D         D_3     Q8
9        D         D_4     Q9

我希望输出这样的数据基于 category 进行过滤。就像当我选择 "A" 时,输出应该是:

A_1 A2, A_3.

当我选择 A_1 时,我得到 Q1

随后适用于所有类别。

解决方法

不确定我是否正确理解您的应用程序,但使用 dplyr 可能是您要查找的内容:

library(dplyr)
df %>% 
  filter(Category == 'A') %>% 
  pull(var = SubCategory)

df %>% 
  filter(SubCategory == 'A_1') %>% 
  pull(var = Option)

我创建了以下数据以供探索。

df <- data.frame(
  Category = c(rep('A',3),rep('B',2),rep('C',rep('D',2)),stringsAsFactors = FALSE
) %>% 
  group_by(Category) %>% 
  mutate(SubCategory = paste0(Category,'_',row_number())) %>% 
  ungroup() %>% 
  mutate(Option = paste0('Q',row_number()))

编辑

您可以创建一个函数,它可以执行我理解您感兴趣的操作。以下是一种快速而肮脏的方法。您可能会找到更优雅或更适合您需求的东西。

希望它有助于为您指明正确的方向。

showQuestions <- function(df,userCategory) {
  subcategories <- df %>% 
    filter(category == userCategory) %>% 
    pull(var = subCategory)
  
  print(paste0('Showing sub categories for ',userCategory,': '))
  if (length(subcategories) == 0) {
    print('No sub categories for this category')
  } else {
    for (sc in subcategories) {
      print(paste0('Showing questions for sub category ',sc,': '))
      questions <- df %>% 
        filter(subCategory == sc) %>% 
        pull(var = Option)
      if (length(questions) == 0) {
        print('No questions for this subcategory')
      } else {
        for (q in questions) {
          print(q)
        }
      }
    }
  }
}

# Try out e.g.
showQuestions(df,'A')
showQuestions(df,'E')
,

根据需要使用 filter(# 可选行)

library(dplyr)
df1 <- df %>% 
  # filter(Category == "A")
  filter(Category == "A",Subcategory == "A_1")

数据:

df <- tribble(
~Category,~Subcategory,~Option,"A","A_1","Q1","A_2","Q2","A_3","Q3","B","B_1","Q4","B_2","Q5","C","C_1","Q6","Q7","D","D_3","Q8","D_4","Q9")

大佬总结

以上是大佬教程为你收集整理的R:根据行数据过滤全部内容,希望文章能够帮你解决R:根据行数据过滤所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: