簡體   English   中英

如何僅使用 R 中的循環將特定列的多列轉換為數字?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM