【问题标题】:How do I change values to numeric in r?如何在 r 中将值更改为数字?
【发布时间】:2021-03-11 15:15:16
【问题描述】:

可重现的样本数据

df <- data.frame(
  change_time = c("[4605]", "[4000]", "[4305]", 
                  "[5530]", "[6500]", "[5653]", 
                  "[2936]", "[4691]", "[2500]")
)

data frame with values

嗨, 如何将值更改为数字? 到目前为止,我已经使用 as.numeric(),但我收到了警告 警告信息: 强制引入的 NAs

【问题讨论】:

  • x &lt;- c("[4605]", "[4000]");as.numeric(gsub("\\[|\\]", "", x))。图像不是发布数据(或代码)的好方法。请参阅 this Metarelevant xkcd。您可以以dput 格式发布示例数据吗?请使用您尝试过的代码和dput(df) 的输出来编辑问题。或者,如果 dput(head(df, 20)) 的输出太大。 (注意:df 是您的数据集的名称。)

标签: r


【解决方案1】:

这是使用dplyrstringr 包的解决方案。 mutate 允许您修改现有的 change_time 变量。 str_remove_all 用于删除 change_time 变量中的匹配模式。 as.numericchange_time 变量从character 转换为numeric

df 替换为您的数据集的名称。

# Recreate sample data 

df <- data.frame(
  change_time = c("[4605]", "[4000]", "[4305]", "[5530]", "[6500]", "[5653]", "[2936]", "[4691]", "[2500]")
)

# Import the libraries

library(dplyr)
library(stringr)

# Code to accomplish what is asked

df %>% 
  mutate(
    change_time = as.numeric(str_remove_all(change_time, "\\[|\\]"))
    )

# Output

#>   change_time
#> 1        4605
#> 2        4000
#> 3        4305
#> 4        5530
#> 5        6500
#> 6        5653
#> 7        2936
#> 8        4691
#> 9        2500

reprex package (v0.3.0) 于 2021-03-11 创建

【讨论】:

  • 不客气,欢迎来到 StackOverflow。如果某个答案符合您的需求,请考虑通过单击复选标记和/或投票将其标记为已接受。
【解决方案2】:

在处理 R 对象时,明智的做法是使用 str() 函数来查看您拥有的数据类型。我不确定,但我假设您的数据是每边都有 [ ] 的字符串。

 #Install from tidyverse or manually
library(magrittr)
library(stringr)
str_extract(df$change_time,"\\d*") %>% as.numeric()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 2017-04-25
    • 2022-01-26
    • 1970-01-01
    相关资源
    最近更新 更多