gpt4 book ai didi

R: "Scanning"小数点数字

转载 作者:行者123 更新时间:2023-12-01 23:05:26 28 4
gpt4 key购买 nike

我正在使用 R 编程语言。

假设我有以下数据:

a = c("12234.2434", "gg.546", "45657herg.6657767")

b = a

my_data = data.frame(a,b)

我正在尝试创建一个新变量“c”,其中包含小数点之前的前两个“条目”和小数点之后的前两个“条目”。如果正确完成,这将看起来像这样:34.243,gg.546,rg.665

                  a                 b     c
1 12234.2434 12234.2434 34.243
2 gg.546 gg.546 gg.546
3 45657herg.6657767 45657herg.6657767 rg.665

通常情况下,我会使用 R 中的 substr() 函数来完成此操作 - 但由于数字的长度不同,小数点可以位于不同的位置,从而使 substr() 函数在这种情况下不是很有用。

我知道如何在 Microsoft Excel 中使用“文本到列”和“分隔”选项(通过使用“小数点”指定“固定宽度分隔”)来解决此问题 - 但我尝试在 R 中使用“dplyr”库。

有人可以告诉我如何做到这一点吗?

谢谢!

最佳答案

从输出来看,您似乎需要小数点前 2 个条目和小数点后 3 个条目。

您可以使用sub来提取这些值。

sub('.*(.{2}\\..{3}).*', '\\1', my_data$a)
#[1] "34.243" "gg.546" "rg.665"

dplyr中 -

library(dplyr)
my_data %>% mutate(c = sub('.*(.{2}\\..{3}).*', '\\1', a))

# a b c
#1 12234.2434 12234.2434 34.243
#2 gg.546 gg.546 gg.546
#3 45657herg.6657767 45657herg.6657767 rg.665

关于R: "Scanning"小数点数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70994525/

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