【问题标题】:Add column to dataframe based on condition根据条件将列添加到数据框
【发布时间】:2020-05-23 11:08:00
【问题描述】:

我有一个数据框,其月份从 1 到 120 不等,并编写了代码来查看月份列中的月份并指定年份(在本例中为 1-10):

df$Year <- ifelse(df$Month >= 1 & df$Month <= 12*1, '1',
           ifelse(df$Month >= 1+12 & df$Month <= 12*2, '2',
           ifelse(df$Month >= 1+12*2 & df$Month <= 12*3, '3',
                       ...
           ifelse(df$Month >= 1+12*9 & df$Month <= 12*10, '10', NA))))))))))

我想知道是否有更有效的方法来做到这一点?

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    您可以使用cut()

    df$Year <- cut(df$Month, seq(0, 120, 12), labels = F)
    

    ceiling()

    df$Year <- ceiling(df$Month / 12)
    

    【讨论】:

      【解决方案2】:

      我认为您正在寻找%/%(整数除法)运算符。比如:

      df$Year <- (df$Month-1) %/% 12  +  1
      

      【讨论】:

      • 你的意思是%/%
      • 糟糕,你是对的 :-) 现在已编辑。 %% 将给出月份编号,%/% 将给出年份编号。
      【解决方案3】:

      另一个选项是findInterval

      df$Year <- findInterval(df$Month, seq(0, 120, 12))
      

      【讨论】:

        猜你喜欢
        • 2019-07-17
        • 1970-01-01
        • 2021-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-02
        • 1970-01-01
        • 2021-10-26
        相关资源
        最近更新 更多