gpt4 book ai didi

r - 如何计算和标记r数据框中的唯一值

转载 作者:行者123 更新时间:2023-12-04 09:26:17 25 4
gpt4 key购买 nike

我有以下数据框:

data <- data.frame(week = c(rep("2014-01-06", 3), rep("2014-01-13", 3), rep("2014-01-20", 3)), values = c(1, 2, 3))

         week values
1 2014-01-06 1
2 2014-01-06 2
3 2014-01-06 3
4 2014-01-13 1
5 2014-01-13 2
6 2014-01-13 3
7 2014-01-20 1
8 2014-01-20 2
9 2014-01-20 3

我想在 data 中创建一个列计算唯一的 week并为其分配一个顺序值,使得 df 如下所示:

         week values seq_value
1 2014-01-06 1 1
2 2014-01-06 2 1
3 2014-01-06 3 1
4 2014-01-13 1 2
5 2014-01-13 2 2
6 2014-01-13 3 2
7 2014-01-20 1 3
8 2014-01-20 2 3
9 2014-01-20 3 3

最佳答案

我想惯用的方法是在提供的日期之外计算一年中的实际一周(如果您的周不是从一年的第一周开始)。

as.integer(format(as.Date(data$week), "%W"))
## [1] 1 1 1 2 2 2 3 3 3

另一个基本 R 解决方案是使用 as.POSIXlt 类并利用其 yday 属性

as.POSIXlt(data$week)$yday %/% 7 + 1
## [1] 1 1 1 2 2 2 3 3 3

如果您想要更短的语法,data.table 包(其中包括许多其他 - 请参阅 @Kshashaas 评论)提供了一个快速包装器

library(data.table)
week(data$week)
## [1] 1 1 1 2 2 2 3 3 3

这个包最好的地方是你可以通过引用创建列(类似于@akruns 上一个解决方案,但可能更有效,因为不需要 by 参数)

setDT(data)[, seq_value := week(week)]

关于r - 如何计算和标记r数据框中的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27768815/

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