我有一个从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
中的dplyr
和tidyverse
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/