gpt4 book ai didi

r - 转换数据以在其上使用 lubridate

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

首先感谢您对其他帖子的所有回答,这对我帮助很大。这是我的第一个。

我有这样的数据:

 [1] 1986.05 1986.06 1986.07 1986.08 1986.09 1986.10 1986.11 1986.12 1987.01 1987.02 1987.03 1987.04 1987.05 1987.06

我想把它改成

 [1] 1986-05 1986-06 1986-07 1986-08 1986-09 1986-10 1986-11 1986-12 1987-01 1987-02 1987-03 1987-04 1987-05 1987-06

我尝试使用 gsub() 或粘贴 my data + "-01',但问题是:它将我的数据转换为第一个字符: 1986.10 变为 1986-1

它应该是一个月,所以 .10 与 .1 不同。

我真的无法解释我是如何设法处于这种情况的,但现在我真的很想知道如何直接从 R 转换它! (在 Excel 上会更容易)

谢谢!


编辑:

我正在编辑我的帖子以提供有关该问题的详细信息。

问题是大多数方法将列从数字转换为字符。

结果是 1986.10 [1986 年 10 月] 变成 1986.1 [1986 年 1 月]。似乎字符值的末尾不能有“0”。但保持它很重要......

最佳答案

假设是年.月,有多种方法可以做到这一点。将其转换为 yearmon 类(来自 zoo),然后更改 format

library(zoo)
format(as.yearmon(as.character(v1), format = "%Y.%m"), "%Y-%m")
#[1] "1986-05" "1986-06" "1986-07"

或者这可以通过使用 sub. 替换为 - 来完成

sub(".", "-", v1, fixed = TRUE)
#[1] "1986-05" "1986-06" "1986-07"

如果值为数字,则无法区分1986.11986.10。一种选择是读取为字符向量/列 ('v2'),然后对其进行处理

format(as.yearmon(v2, format = "%Y.%m"), "%Y-%m")
#[1] "1986-01" "1986-10" "1986-05"

数据

v1 <- c(1986.05, 1986.06, 1986.07)
v2 <- scan(text = "1986.1,1986.10,1986.5", what = "", sep=",", quiet = TRUE)

关于r - 转换数据以在其上使用 lubridate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56133180/

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