提问人:kartik trivedi 提问时间:8/16/2023 最后编辑:r2evanskartik trivedi 更新时间:8/16/2023 访问量:28
在 R 中剪裁数据
Trimming data in R
问:
我在 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
答:
1赞
Andrew Gustar
8/16/2023
#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
最简单的方法是先删除逗号,然后删除第一串数字之后的所有内容。
评论