gpt4 book ai didi

r - 将具有 k 格式数字的因子列转换为数字而不丢失任何数据

转载 作者:行者123 更新时间:2023-12-01 12:49:09 27 4
gpt4 key购买 nike

我有一个因子列,其中包含数字。有些数字以 k 格式书写,例如。 99k、9.25k、91.9k 等,而其他的则写成完整的,如 998、575 等。我想做两件事-:

  • 我想将具有 k 的数字乘以 1000 并删除 k。
  • 我想在不丢失任何数据的情况下将此列转换为数字列。

如果我首先将它转换为数字应用 as.numeric,则 k 格式数字将变为 NA。

我想不出有什么办法可以解决这个问题。谁能帮我解决 r 中的问题?

以下是示例数据

df=data.frame(
ID = c(1:8),
Likes = c('99k', '997','15.5k', '9.25k','575', '800', '8.5k', '2,400')
)

编辑 我仍然不知道问题出在哪里。在尝试了此处提供的所有解决方案之后,仍然生成了 NA。我提供完整数据的链接。请通过它并帮助我找到问题所在。我关注的列是“喜欢”。

https://drive.google.com/file/d/1tR0F4SwGmsVjh5NGGpONP6LTaqgDOM4l/view?usp=sharing

最佳答案

这里有一个替代方案,将带有 ks 的数字转换为科学记数法:

df$Likes_num = as.numeric(gsub("k", "e3", df$Likes))
df
ID Likes Likes_num
1 1 99k 99000
2 2 997 997
3 3 15.5k 15500
4 4 9.25k 9250
5 5 575 575
6 6 800 800
7 7 8.5k 8500

编辑以覆盖整个数据集:

所以你有大写的 Ks,如 16.1K,大写的 Ms,如 1.2M,还有逗号,如 4,225。以下代码处理所有这些:

df$Likes_num = df$Likes
df$Likes_num = gsub(",", "", df$Likes_num)
df$Likes_num = gsub("K", "e3", df$Likes_num)
df$Likes_num = gsub("M", "e6", df$Likes_num)
df$Likes_num = as.numeric(df$Likes_num)

sum(is.na(df$Likes_num))
## [1] 0

关于r - 将具有 k 格式数字的因子列转换为数字而不丢失任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59503467/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com