在 R 中修剪数据

问题描述 投票:0回答:1

我在 R 中有一个数据框,其中一列数据是这样的

    "828/km (2,140/sq mi)"     "365/km (950/sq mi)"       "1,102/km (2,850/sq mi)"  
    "1,029/km (2,670/sq mi)"   "236/km (610/sq mi)"       "555/km (1,440/sq mi)"   

我想修剪这个数据,使它变成这样

    828    365    1102    1029    236    555

我该怎么做?

我尝试在这段代码中使用 gsub 和 grepl 函数

grepl("[0-9]+/km",Population.Density.a.), as.numeric(gsub("[^0-9]","",Population.Density.a.))

代码不起作用

尝试过 str_extract 函数

population_density<-str_extract(states_data$Population.Density.a.,"[0-9]+/km")

得到这个结果

    "828/km" "365/km" "102/km" "029/km" "236/km" "555/km" "201/km" "319/km" "308/km" "303/km" 

应该是

    "828/km" "365/km" "1,102/km" "1,029/km" "236/km" "555/km" "201/km" "319/km" "308/km" "303/km" 

尝试过

population_density<-str_extract(states_data$Population.Density.a.,"\\d+\\,\\d+")

得到这个结果

    "2,140"  NA       "1,102"  "1,029"  NA       "1,440"  NA       NA       NA       NA
r trim gsub text-extraction
1个回答
1
投票

你可以做这样的事情...

x <- c("828/km (2,140/sq mi)", "365/km (950/sq mi)", "1,102/km (2,850/sq mi)",
       "1,029/km (2,670/sq mi)", "236/km (610/sq mi)", "555/km (1,440/sq mi)")

as.numeric(gsub("(\\d+).+", "\\1", gsub(",", "", x)))

[1]  828  365 1102 1029  236  555

最简单的方法是先删除逗号,然后删除第一串数字之后的所有内容。

© www.soinside.com 2019 - 2024. All rights reserved.