我有一个从Coursera解析的数据框。列之一是该 class 的注册学生人数。看起来像这样:
df <- data.frame(uni = c("Yale", "Toronto", "NYU"), students = c("16m", "240k", "7.5k"))

      uni students
1    Yale     "16m"
2 Toronto     "240k"
3     NYU     "7.5k"

我需要得到的是
      uni students
1    Yale     16000000
2 Toronto     240000
3     NYU     75000

因此,对我而言,主要困难在于值的类别是字符,并且我不知道用于替换ks和ms以及将列的类别转换为数字的函数。

请帮我!

最佳答案

使用stringr中的dplyrtidyverse

library(tidyverse)
df %>%
  mutate(students = case_when(
    str_detect(students, "m") ~ as.numeric(str_extract(students, "[\\d\\.]+")) * 1000000,
    str_detect(students, "k") ~ as.numeric(str_extract(students, "[\\d\\.]+")) * 1000,
  ))
# A tibble: 3 x 2
  uni     students
  <chr>      <dbl>
1 Yale    16000000
2 Toronto   240000
3 NYU         7500

关于r - 如何用成千上万个替换“k”和“m”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61987917/

10-12 19:02