我的数据框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
有人可以提出正确的方法吗?由于数据很大,正确的方式很重要。
答案 0 :(得分:1)
如果有多列,我们可以使用lapply
循环每列,并使用gsub
删除非数字元素。 lapply
的结果将是一个'列表',可以将其分配回原始数据集。使用[]
的想法是保留原始数据框架的结构。完整。假设,如果我们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))