首页 > 解决方案 > 如何用数千和数百万替换“k”和“m”?

问题描述

我有一个从 Coursera 解析的数据框。其中一列是参加该课程的学生人数。看起来像这样:

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 的函数,以及将列类转换为数字的函数。

请帮我!

标签: rdataframeparsingreplaceconverters

解决方案


例如

d$students <- dplyr::case_when(
  stringr::str_detect(d$students, 'm') ~ readr::parse_number(d$students) * 1e6,
  stringr::str_detect(d$students, 'k') ~ readr::parse_number(d$students) * 1e3,
  TRUE ~ parse_number(d$students)
)

推荐阅读