【问题标题】:Convert data frame from character to numeric将数据框从字符转换为数字
【发布时间】:2023-01-09 22:50:46
【问题描述】:

我有以下带有一列的数据框,当前存储为字符列:

enter image description here

我正在尝试分隔文本,但 separate() 函数似乎不适用于字符列。

我试图使用以下代码隐藏这些列。他们都不适合我。

第一次尝试:

Overview_10_K_filings_df$Overview_10_K_filings <- as.numeric(as.character(Overview_10_K_filings_df$Overview_10_K_filings))

这会产生错误消息:“警告消息:强制引入的 NA”

第二次尝试:

Overview_10_K_filings_df[1] <- apply(Overview_10_K_filings_df[1], 2,
                                     function(x) as.numeric(as.character(x))

你能帮我改造一下专栏吗?还是有其他方法可以分离内容? 谢谢!

【问题讨论】:

  • 你好!你能解释一下你想如何分隔文本吗?哪些字符定义列之间的分隔?
  • 是的当然。所以现在这是名称“QTR4/20151229_10-K_edgar_data_1230058_0000892626-15-000373.txt”,我想将其转换为:QTR4 | 20151229 | 10-K |埃德加 |数据 | 1230058 | 0000892626-15-000373 |文本

标签: r text character


【解决方案1】:

通过创建一个测向仪从字符串中取出并在 3 个步骤中使用 str_replace。 也许不是实现目标的最简洁的方法。这三个步骤保留在测向仪出于提供信息的原因,更换过程如何进行。

library(tidyverse)
  
t <- "QTR4/20151229_10-K_edgar_data_1230058_0000892626-15-000373.txt"
t |> as.data.frame() |> 
mutate(new1=stringr::str_replace(t, '/', ' | ')) |> 
  mutate(new2 = stringr::str_replace_all(new1, '_', ' | ')) |> 
  mutate(new3 = stringr::str_replace(new2, '.txt', ' | txt')) |> 
  select(new3) |> as.character()
#> [1] "QTR4 | 20151229 | 10-K | edgar | data | 1230058 | 0000892626-15-000373 | txt"

更好的:或者你这样做:

b <- "_|/|\."
stringr::str_replace_all(t, b, ' | ')
# [1] "QTR4 | 20151229 | 10-K | edgar | data | 1230058 | 0000892626-15-000373 | txt"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 2020-10-28
    相关资源
    最近更新 更多