【问题标题】:Data Frame of Factors: Split column into two and extract number因子数据框:将列拆分为两列并提取数字
【发布时间】:2018-07-19 09:31:45
【问题描述】:

我有以下数据框df,下面是我在数据框中的第一列df[1]

 Well and Depth  
   Black Peak 1000
   Black Peak 1001
   Black Peak 1002
   Black Peak 1003  

RStudio 目前将此列视为因素列表,但我想将其拆分为两个数据框列/向量,一个将文本作为字符串/字符,另一个将数字作为数值。所以它看起来像这样:

   Well            Depth
   "Black Peak"     1000
   "Black Peak"     1001
   "Black Peak"     1002
   "Black Peak"     1003  

将绘制深度数。

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以试试这个:

    df$Well  <- sub("(^.*) [0-9]+$", "\\1", df$`Well and Depth`)
    df$Depth <- as.numeric(sub(".* ([0-9]+$)", "\\1", df$`Well and Depth`))
    

    数据:

    structure(list(`Well and Depth` = structure(1:4, .Label = c("Black Peak 1000", 
    "Black Peak 1001", "Black Peak 1002", "Black Peak 1003"), class = "factor")), .Names = "Well and Depth", row.names = c(NA, 
    -4L), class = "data.frame")
    

    【讨论】:

    • 有更简单的方法吗?在未来的情况下,我将拥有 100 多个深度,并且不会将所有名称都输入到脚本中的一个 c() 向量中。
    • 这个答案很有用
    • @NotAMathMan 什么是“深度”?
    • 我的意思是我将有比 4 多得多的条目,如本例所示。将来,我将有 100 多个这样的条目;因为它将是 Black Rock 1001、Black Rock 1002 .....Black Rock 1105。我所说的深度是指数字 1001、1002 等。
    【解决方案2】:
    HERE=data.frame(WELL=character(),DEPTH=numeric())
    strcapture("(.*)\\s(\\d+)$",as.character(df[,1]),HERE)
            WELL DEPTH
    1 Black Peak  1000
    2 Black Peak  1001
    3 Black Peak  1002
    4 Black Peak  1003
    

    【讨论】:

    • 如果字母之间有数字,您的解决方案会起作用吗?比如:“黑1000峰1000”?
    • 不,它不会工作。我可以在最后添加$ 来完成这项工作。
    • 我不太明白这里发生了什么。这不需要我的特定数据框。你能把它编辑成我的数据框中的内容吗?
    • 再看一遍,它的名字df[,1]和你的名字一模一样
    • 我可以重复使用我的df 数据框,而不是声明一个全新的数据框HERE?此外,我在第一列之后还有其他列。如何在以下列之前插入新的第二列(将是深度),并将这些数字放入新插入的列中?
    【解决方案3】:

    我们可以使用separate fromtidyr

    library(tidyr)
    separate(df1, `Well and Depth`, into = c("Well", "Depth"), "\\s+(?=[0-9])")
    #        Well Depth
    #1 Black Peak  1000
    #2 Black Peak  1001
    #3 Black Peak  1002
    #4 Black Peak  1003
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 2013-01-22
      相关资源
      最近更新 更多