【问题标题】:Loop or function in r to create a new dataframe's column在 r 中循环或函数以创建新数据框的列
【发布时间】:2021-02-03 15:09:50
【问题描述】:

我有一个数据框,其中 A 列和 B 列包含从 1 到 10 的数值。

    A B
1   5 9
2   7 2
3   2 1
4   1 9

我在数据框中添加了一个新列 OCCU,每行的值 如果以下两个条件之一成立,则 HOPD:3

【问题讨论】:

  • 你很幸运,现在你有两个答案,一个是基于 R 的,一个是 tidyverse。
  • 顺便说一句,没有必要使用 for 循环,因为在 R 中数据是矢量化的。

标签: r for-loop if-statement


【解决方案1】:

试试这个:

library(dplyr)

df1 %>% 
  mutate(OCCU = ifelse(between(A, 3, 8) | between(B, 3, 8), "HOPD", "LOPD"))

between函数将要比较的值作为第一个参数,下限作为第二个参数,上限作为第三个参数。因为它考虑到<=,所以我通过了8而不是9

【讨论】:

    【解决方案2】:

    让我帮忙:

    dataset <- data.frame(A = c(5,7,2,1),
                          B = c(9,2,1,9))
    
    dataset$OCCU <- ifelse(dataset$A < 9 & dataset$A > 3 | 
                             dataset$B < 9 & dataset$B > 3, 
                           "HOPD", "LOPD")
    

    这是数据集的内容:

      A B OCCU
    1 5 9 HOPD
    2 7 2 HOPD
    3 2 1 LOPD
    4 1 9 LOPD
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      • 2023-04-11
      相关资源
      最近更新 更多