[英]How to turn multiple columns into numeric for specific columns only using a loop in R?
初學者:我有一個 dataframe,其中包含多個列,這些列當前是包含 $-符號和空格的字符串,我想將它們轉換為數字。 我的 dataframe 看起來像這樣:
Name Col_x_1 Company Col_x_2 Start_Year End_Year Col_x_3
asd $841 392 Test $31 000 1902 1933 0
kfj 0 Test_2 0 1933 1954 $10 000
ale $200 000 Test_3 0 1988 1999 0
...
我目前正在使用以下代碼循環遍歷名為Col_x_
的列,因為它們都以相同的升序命名:
library(tidyverse)
df %>%
mutate(across(starts_with("Col_x_"), ~gsub("\\$", "", .) %>%
as.numeric())
)
但是,這只會給我 NA,因為 as.numeric() 不起作用。 有誰知道我該如何修復這段代碼? 先感謝您!
library(tidyverse)
df %>%
mutate(across(starts_with("Col_x_"), ~ str_remove_all(.x, "[^0-9]"))) %>%
type_convert()
# A tibble: 3 × 7
Name Col_x_1 Company Col_x_2 Start_Year End_Year Col_x_3
<chr> <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 asd 841392 Test 31000 1902 1933 0
2 kfj 0 Test_2 0 1933 1954 10000
3 ale 200000 Test_3 0 1988 1999 0
除了評論中的解決方案,您還可以使用 {readr} 的便利功能,例如:
library(readr)
my_locale <- locale(grouping_mark = " ")
影響:
> parse_number("$12 235", locale = my_locale)
[1] 12235
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.