【问题标题】:Assigning label to each record based on multiple conditions根据多个条件为每条记录分配标签
【发布时间】:2021-08-15 13:38:30
【问题描述】:

这是我的df (data.frame)

Distance <- c(30, 20, 32, 20)
Speed <- c(25, 24, 17, 21)
df <-data.frame(Distance,Speed)
df
  Distance Speed
1       30    25
2       20    24
3       19    15
4       20    21

我需要根据两个条件标记每一行:

  1. 如果距离 = 20 并且
  2. 如果速度大于等于18。

如果条件满足标签 = “危险” 如果条件不满足 label = "Normal"

所需的输出应如下所示。

  Distance Speed  Label
   30    25 Normal
   20    24 Danger
   19    15 Normal
   20    21 Danger

有什么方法可以有效地做到这一点?

【问题讨论】:

  • 一种方法是:df$Label = ifelse(df$Distance == 20 &amp; df$Speed &gt;= 18, "Danger", "Normal")
  • 所有 3 种方法都运行良好。谢谢

标签: r dplyr data.table grouping labeling


【解决方案1】:

您可以在条件中使用 if 语句,然后将答案转换为标签。

library(dplyr)
df <- df %>% mutate(Label = ifelse(Distance == 20 & Speed >= 18, 'Danger', 'Normal'))

【讨论】:

    【解决方案2】:

    也许这应该可行。你使用case_when创建一个条件向量

    require(tidyverse)
    
    df %>%
    mutate( Label = case_when( Distance == 20 & Speed >= 18 ~ "Danger" , TRUE ~ "Normal"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-30
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多