查找某个值是否在其他列的范围内

2023-12-27

我有一个数据框df看起来像这样:

Input:

df <- read.table(text = 

"ID  Q1_PM Q1_TP Q1_overall  Q2_PM  Q2_LS  Q2_overall
 1   1     2     3           1       2     2       
 2   0     NA    NA          2       1     1 
 3   2     1     1           3       4     0  
 4   1     0     2           4       0     2 
 5   NA    1     NA          0       NA    0  
 6   2     0     1           1       NA    NA"   

, header = TRUE)

期望的输出:

为了进一步解释一下,我想要的输出如下:

 ID  Q1_PM Q1_TP Q1_overall  Q2_PM  Q2_LS  Q2_overall Q1_check  Q2_check
 1   1     2     3           1       2     2          "above"   "within"
 2   0     NA    NA          2       1     1           NA       "within"
 3   2     1     1           3       4     0          "within"  "below"
 4   1     0     2           4       0     2          "above"   "within"
 5   NA    1     NA          0       NA    0           NA       "within"
 6   2     0     1           1       NA    NA         "within"   NA

解释:

示例1:

基于列中的值Q1_PM and Q1_TP,我想看看列中的值是否Q1_overall is within他们的范围与否?如果不在范围内,则该值above or below范围?为了跟踪这一点,我想添加一个附加列Q1_check.

示例2:

同样,基于以下值Q2_PM and Q2_LS,我想检查的值是否Q2_overall is within他们的范围与否?如果不在范围内,是否是above or below范围?再次,为了跟踪这一点,我想添加一个附加列Q2_check

要求:

1-为此,我想添加额外的列Q1_check and Q2_check其中第一列用于涉及的比较Q1项目,第二列用于涉及的比较Q2 items.

2- 列可以包含以下值:above, below and within.

3-列命名时的情况overall have NAs,那么额外的列也可以有NAs.

相关文章:

我查找了相关帖子,例如:将具有取决于另一列的值的列添加到数据框中 https://stackoverflow.com/questions/50988447/add-column-with-values-depending-on-another-column-to-a-dataframe and 通过将数字列与固定值进行比较来创建类别 https://stackoverflow.com/questions/15016723/create-categories-by-comparing-a-numeric-column-with-a-fixed-value但我遇到了如下所述的错误。

部分解决方案:

我能想到的唯一解决方案是:

df$Q1_check <- ifelse(data$Q1_overall < data$Q1_PM, 'below',
                        ifelse(data$Q1_overall > data$Q1_TP, 'above', 
                               ifelse(is.na(data$Q1_overall), NA, 'within')))

但它会导致以下错误:Error in data$Q1_overall : object of type 'closure' is not subsettable。我不明白可能的问题是什么。

OR

df %>%
  mutate(Regulation = case_when(Q1_overall < Q1_PM ~ 'below',
                                Q1_overall > Q1_TP ~ 'above', 
                                Q1_PM < Q1_overall < Q1_TP, 'within'))

这也会导致错误Error: unexpected '<' in: "Q1_overall > Q1_TP ~ 'above', Q1_PM < Q1_overall <"

Edit 1:

如果(比方说)列如下:

"Q1 Comm - 01 Scope Thesis"
"Q1 Comm - 02 Scope Project"
"Q1 Comm - 03 Learn Intern"
"Q1 Comm - 04 Biography"
"Q1 Comm - 05 Exhibit"
"Q1 Comm - 06 Social Act"
"Q1 Comm - 07 Post Project"
"Q1 Comm - 08 Learn Plant"
"Q1 Comm - 09 Study Narrate"
"Q1 Comm - 10 Learn Participate"
"Q1 Comm - 11 Write 1"
"Q1 Comm - 12 Read 2"
"Q1 Comm - Overall Study Plan"

怎样才能识别柱子何时Q1 Comm - Overall Study Plan is:

1 - Below the min()所有其他列,或

2 - Above the max()所有其他列,或

3 - Within所有其他列的范围

Edit 2:

对于更新的字段,我还包括dput(df)

dput(df)

structure(list(ï..ID = c(10L, 31L, 225L, 243L), Q1.Comm...01.Scope.Thesis = c(NA, 
2L, 0L, NA), Q1.Comm...02.Scope.Project = c(NA, NA, NA, 2L), 
    Q1.Comm...03.Learn.Intern = c(4L, NA, NA, NA), Q1.Comm...04.Biography = c(NA, 
    NA, NA, 1L), Q1.Comm...05.Exhibit = c(4L, 2L, NA, NA), Q1.Comm...06.Social.Act = c(NA, 
    NA, NA, 3L), Q1.Comm...07.Post.Project = c(NA, NA, 3L, NA
    ), Q1.Comm...08.Learn.Plant = c(NA, NA, NA, 4L), Q1.Comm...09.Study.Narrate = c(NA, 
    NA, 0L, NA), Q1.Comm...10.Learn.Participate = c(4L, NA, NA, 
    NA), Q1.Comm...11.Write.1 = c(NA, 2L, NA, NA), Q1.Comm...12.Read.2 = c(NA, 
    NA, 1L, NA), Q1.Comm...Overall.Study.Plan = c(4L, 1L, 2L, 
    NA), X = c(NA, NA, NA, NA), X.1 = c(NA, NA, NA, NA), X.2 = c(NA, 
    NA, NA, NA)), class = "data.frame", row.names = c(NA, -4L
))

任何有关如何实现这一目标的建议将不胜感激。谢谢你!


似乎是一个很冗长的方法 -

library(dplyr)

comparison <- function(x, y, z) {
  case_when(is.na(z) ~ NA_character_,
            z >= x & z <= y | 
              z >= y & z <= x |
              is.na(x) & y == z |
              is.na(y) & x == z ~ 'within', 
            z > x & z > y ~ 'above', 
            TRUE ~ 'below')
}

df %>%
  mutate(Q1_check = comparison(Q1.PM, Q1.TP, Q1.overall), 
          Q2_check = comparison(Q2.PM, Q2.LS, Q2.overall))
  
         
#  ID Q1.PM Q1.TP Q1.overall Q2.PM Q2.LS Q2.overall Q1_check Q2_check
#1  1     1     2          3     1     2          2    above   within
#2  2     0    NA         NA     2     1          1     <NA>   within
#3  3     2     1          1     3     4          0   within    below
#4  4     1     0          2     4     0          2    above   within
#5  5    NA     1         NA     0    NA          0     <NA>   within
#6  6     2     0          1     1    NA         NA   within     <NA>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找某个值是否在其他列的范围内 的相关文章

  • 为什么我在 ddply 中看到“错误:length(rows) == 1 is not TRUE”?

    我有一个数据框 比如工资单 例如 payroll lt read table text AgencyName Rate PayBasis Status NumRate HousingAuthority 26 843 00 Annual Fu
  • 如何在 Shiny 中动态渲染的 textInput 添加样式元素

    你好堆栈溢出 在我最近提出的问题中 我已经解决了一些与动态渲染 UI 元素相关的主要问题 并在一些了不起的人的帮助下动态创建了观察者 参见此处 动态渲染的 UI 如何在第二次运行时删除旧的反应变量 https stackoverflow c
  • 如何在 R 中查找平衡面板数据(又名,如何查找面板中的哪些条目在给定窗口内完整)

    我有来自 Compustat 的大量数据 我向其中添加了一些手工收集的数据 认真地从一堆旧书中手工收集 但我不想手工收集整个面板 只想随机选择一个子集 为了找到更大的集合 我从中随机选择 我想从 Compustat 的平衡面板开始 我看到p
  • 在 Linux 下更改 RStudio 用户界面(不是图形等)中的字体大小

    This is not关于更改使用 RStudio 生成的图表中的字体大小的问题 我已经知道该怎么做了 我在配备 视网膜 显示屏的 MacBook Pro 上的 Linux 下使用 RStudio 我使用 KDE 作为我的窗口管理器 我可以
  • 在 R Shiny 中显示/隐藏整个框元素

    我目前正在尝试找到一种方法来隐藏 显示 R Shiny 中的整个 box 元素 以及里面的所有内容 我想创建一个可能的按钮 它允许用户展开特定框 然后使用相同 甚至不同 的按钮隐藏它 我不想使用条件面板 因为我的应用程序非常大并且会产生一些
  • 如何制作一连串的ggplots并在它们之间绘制箭头?

    对于一个项目 我需要绘制一些图并在它们之间放置箭头作为序列的指示 我想知道我是否可以用 ggplot 来做到这一点 是否可以使用 ggplot2 绘制一个干净的大箭头并将其添加到最终的多重图中 作为示例 我使用此代码来绘制绘图 librar
  • 通过 RCpp 返回 NA

    新手 RCpp 问题在这里 How can I make a NumericVector returnNA到R 例如 假设我有一个 RCpp 代码 它分配NA到向量的第一个元素 RCpp export NumericVector myFun
  • 使用 dplyr 的 select 引用变量名[重复]

    这个问题在这里已经有答案了 通常我会想要选择变量的子集 其中该子集是函数的结果 在这个简单的例子中 我首先获取与宽度特征相关的所有变量名称 library dplyr library magrittr data iris width var
  • 将 csv 文件上传到shinyApps.io

    我的应用程序在本地运行良好 并且我能够成功地将应用程序部署到shinyapps io 服务器 但是当我尝试使用shinyapps URL 在浏览器中加载应用程序时 收到以下错误消息 错误对象 数据 不是成立 我认为这是因为 data 变量从
  • 在 R 中收集多组列[重复]

    这个问题在这里已经有答案了 我有一个宽数据框 需要将其收集或融化成一个高数据框 我遇到的问题是我有几组列需要保持关联 分组 我每个表单提交有 2 个用户 每个用户有 3 列数据 我想将这 6 列基本上以 3 组的形式堆叠起来 以便每个用户都
  • 替换rmarkdown/knitr/pdf中字幕的自动编号

    我正在使用 Rmarkdown 生成 PDF 文档 我想在其中手动定义图号 下面是一个块的示例 r chunk26 fig cap Fig 5 3 My figure caption plot 1 1 我使用特殊的编号来遵循文档的章节 问题
  • 将数据框分成相等的部分

    我有一个示例数据框 df lt data frame x 1 112 y runif 112 有没有办法打印数据框列表 其中列表的第一部分包含行1 10 第二11 20等等 直到最后 111 112 你可以使用split with rep
  • 在 ggplot2 上绘制世界地图

    我一直在尝试在 ggplot2 上绘制世界地图 我跟踪了电子邮件的线索 带 l 的 ggplot 地图 https stackoverflow com questions 9558040 ggplot map with l但我确实遇到了同样
  • 基于列名称的字符向量的子数据框[重复]

    这个问题在这里已经有答案了 菜鸟问题 提前感谢您的耐心 我有一个数据框 vals lt c 1 1 1 1 testdf lt data frame var1 vals var2 vals var3 vals 我有一个变量名称的字符向量 v
  • 在 Rlattice xyplot 上分别控制轴刻度和轴线

    我怎样才能去除周围的盒子xyplot 同时保留轴刻度刻度线 本着爱德华 塔夫特 Edward Tufte 极简主义数据图形美学的精神 这些轴线是 非数据墨水 并且可以 应该 被 擦除 library lattice my df lt dat
  • A64 Neon SIMD - 256 位比较

    我想将两个小端 256 位值与 A64 Neon 指令 asm 进行有效比较 平等 为了平等 我已经有了解决方案 bool eq256 const UInt256 lhs const UInt256 rhs bool result 首先 将
  • “未找到 JAVA 路径。请检查 JAVA 是否已安装。”初始化 RSelenium 时出错

    我正在尝试启动一个 RSelenium 会话到 webscrape 但是 当运行此代码时 driver lt rsDriver browser c chrome chromever 76 0 3809 126 port 4444L 我收到此
  • ggplot2 - 在绘图顶部添加辅助 y 轴

    对于出版物 我需要向现有绘图添加第二个 y 轴 我遇到了一种方法来做到这一点 https rpubs com kohske dual axis in ggplot2 https rpubs com kohske dual axis in g
  • 在 R 中,为什么 sum 与其他方法(例如 cumsum)相比如此慢?

    我正在尝试实现一个需要非常快的函数 主要是因为它一遍又一遍地处理巨大的数据帧 R 总是让我感到困惑 为什么它有时有点慢 而有时又慢得离谱 不幸的是 它从来都不快 不管怎样 我一直认为 如果可能的话 当以某种方式推入 apply sapply
  • R:中断 for 循环

    你能确认下一个break是否取消了内部for循环吗 for out in 1 n old id velho lt old table df id out for in in 1 n id novo lt new table df ID in

随机推荐