转换为纯数字形式

时间:2015-03-20 16:28:04

标签: r data-cleaning

我的数据框x有多个(此处为2列):

    1,324 RM     342 K
    2,453 DR   2,451 G
1,232,673 RM   3,421 L
      324 RM   7,543 S

我想摆脱逗号和字母字符(例如RM,K,G)。所以,我期待一个数据框:

    1324      342
    2453     2451
 1232673     3421
     324     7543

有人可以提出正确的方法吗?由于数据很大,正确的方式很重要。

1 个答案:

答案 0 :(得分:1)

如果有多列,我们可以使用lapply循环每列,并使用gsub删除非数字元素。 lapply的结果将是一个&#39;列表&#39;,可以将其分配回原始数据集。使用[]的想法是保留原始数据框架的结构。完整。假设,如果我们x <- lapply(x,...),则修改后的&#39; x&#39;将是2的列表,而不是&#39; data.frame&#39;有2列。在gsub中,我们选择所有非(^)数字(0-9)元素,并将其替换为''

 x[] <- lapply(x, function(y) as.numeric(gsub('[^0-9]+', '', y)))
 x
 #    Col1 Col2
 #1    1324  342
 #2    2453 2451
 #3 1232673 3421
 #4     324 7543

数据

 x <- structure(list(Col1 = c("1,324 RM", "2,453 DR", "1,232,673 RM", 
 "324 RM"), Col2 = c("342 K", "2,451 G", "3,421 L", "7,543 S")), 
.Names = c("Col1", "Col2"), class = "data.frame", row.names = c(NA,
-4L))