【问题标题】:How to assign a "keyword" for the values starting with negative number for a column in R?如何为R中的列以负数开头的值分配“关键字”?
【发布时间】:2020-07-06 21:10:24
【问题描述】:

我有一个包含 10,000 行和 2 列的 csv 文件,第一列包含名称,第二列包含日志值。 我想为负日志值添加一个关键字(“red”)。 对于正面->“数据” 可以给点建议吗!

Example-
names     log      group
571008  -0.2153296   red
571008  -0.2153296   red
00333657 -0.2155359 red
567501  0.2196503    data
321750  0.2200974    data
568683  -0.2221536   red

【问题讨论】:

    标签: r bash


    【解决方案1】:

    一种逻辑索引方法:

    #Data
    Data <- structure(list(names = c(571008L, 571008L, 333657L, 567501L, 
    321750L, 568683L), log = c(-0.2153296, -0.2153296, -0.2155359, 
    0.2196503, 0.2200974, -0.2221536)), row.names = c(NA, -6L), class = "data.frame")
    
    #Create index
    index <- Data$log<0
    #Assign
    Data$Flag<-'data'
    Data$Flag[index]<-'red'
    
       names        log Flag
    1 571008 -0.2153296  red
    2 571008 -0.2153296  red
    3 333657 -0.2155359  red
    4 567501  0.2196503 data
    5 321750  0.2200974 data
    6 568683 -0.2221536  red
    

    【讨论】:

    • 嗨鸭,很好的解释。我能知道什么是“row.names = c(NA, -6L)”吗?
    • @park 嗨,亲爱的,row.names = c(NA, -6L) 只是所有数据帧在R 中的内部索引。当您dput() 任何数据框时,通常会看到它。我希望这会有所帮助。
    【解决方案2】:

    我们可以使用ifelse 创建一个新列(而不是将字符串附加到数字类 - 因为它将类转换为character

    df1$group <- with(df1, ifelse(log < 0, "red", "data"))
    df1
    #   names        log group
    #1 571008 -0.2153296   red
    #2 571008 -0.2153296   red
    #3 333657 -0.2155359   red
    #4 567501  0.2196503  data
    #5 321750  0.2200974  data
    #6 568683 -0.2221536   red
    

    数据

    df1 <- structure(list(names = c(571008L, 571008L, 333657L, 567501L, 
    321750L, 568683L), log = c(-0.2153296, -0.2153296, -0.2155359, 
    0.2196503, 0.2200974, -0.2221536)), row.names = c(NA, -6L), 
    class = "data.frame")
    

    【讨论】:

      【解决方案3】:

      您可以使用逻辑值进行子集化和赋值。

      df$group <- c('data', 'red')[(df$log < 0) + 1]
      df
      #   names        log group
      #1 571008 -0.2153296   red
      #2 571008 -0.2153296   red
      #3 333657 -0.2155359   red
      #4 567501  0.2196503  data
      #5 321750  0.2200974  data
      #6 568683 -0.2221536   red
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-12
        • 1970-01-01
        • 1970-01-01
        • 2021-11-18
        • 1970-01-01
        • 2022-06-12
        • 2020-05-24
        相关资源
        最近更新 更多