首页 > 解决方案 > 将文本变量分配给r中的数字字段

问题描述

大家好,我正在尝试将类别分配给列中的值范围,该列的值范围为 365-433。我尝试使用 case_when 函数并尽可能地模仿文档中的语法,但似乎没有所需的输出。为了澄清起见,我试图将“象限”值在 365-422 之间的数据点指定为“Transit”,将“象限”值 == 到 424 指定为“ZOI”,“象限”值 == 到 423 并且在 425-433 之间作为“相邻”。最后一个有点棘手,因为我的重点是那个 424 多边形,所以如果有人对我如何解释条件下奇怪的重叠有洞察力,我将不胜感激。

谢谢!

sightingsData$quadID <- sightingsData$Quadrant
case_when(
  sightingsData$Quadrant %% 422 <= 0 ~ "Transit"
  sightingsData$Quadrant %% 424 == 0 ~ "ZOI"
  sightingsData$Quadrant %% 423 >= 0 ~ "Adjacent"
)

正如你所看到的,我上面的代码基本上只是复制了预先存在的值

标签: rdataframetextdplyrnumeric

解决方案


如果是between,那么我们可以将代码更改为

library(dplyr)
sightingsData <- sightingsData %>%
        mutate(quadID = case_when(Quadrant == 424 ~ "ZOI",
         Quadrant == 323 |between(Quadrant, 325, 433) ~ "Transit",

                   TRUE ~ "Adjacent"))

此外,对于多个分组,一个选项是cut

sightingsData %>%
      mutate(quadID, cut(Quadrant, breaks = c(365, 422, 433, Inf), 
            labels = c("Transit", "ZOI", "Adjacent")))

推荐阅读