R 添加新的day列

R 添加新的day列,r,R,拥有这些数据: dates 1990-02-02 01:00:00 1990-02-02 02:00:00 1990-02-03 01:00:00 1990-02-03 02:00:00 1990-02-04 01:00:00 1990-02-04 02:00:00 我可以创建一个列,其中每一行都有这样的天数吗 number dates 1 1990-02-02 01:00:00 1 1990-02-02 02:00:00 2 1990-02-03 01:00:0

拥有这些数据:

dates
1990-02-02 01:00:00
1990-02-02 02:00:00
1990-02-03 01:00:00
1990-02-03 02:00:00
1990-02-04 01:00:00
1990-02-04 02:00:00
我可以创建一个列,其中每一行都有这样的天数吗

number dates
1      1990-02-02 01:00:00
1      1990-02-02 02:00:00
2      1990-02-03 01:00:00
2      1990-02-03 02:00:00
3      1990-02-04 01:00:00
3      1990-02-04 02:00:00

rank函数应该满足您的需要,但请参考文档,因为没有一个简单的可复制的示例供我使用

temp <- data.frame(dates = c('1990-02-02 01:00:00',
                             '1990-02-02 02:00:00',
                             '1990-02-03 01:00:00',
                             '1990-02-03 02:00:00',
                             '1990-02-04 01:00:00',
                             '1990-02-04 02:00:00',
                             '1990-02-04 03:00:00'))
temp$datesonly<-as.Date(temp$dates)
temp2<-data.frame(dates=unique(temp$datesonly),ranks=rank(unique(temp$datesonly),ties.method="first"))
temp<-merge(temp,temp2,by.x="datesonly",by.y="dates")

temp秩函数应该满足您的需要,但请查阅相关文档,因为没有一个易于复制的示例供我使用

temp <- data.frame(dates = c('1990-02-02 01:00:00',
                             '1990-02-02 02:00:00',
                             '1990-02-03 01:00:00',
                             '1990-02-03 02:00:00',
                             '1990-02-04 01:00:00',
                             '1990-02-04 02:00:00',
                             '1990-02-04 03:00:00'))
temp$datesonly<-as.Date(temp$dates)
temp2<-data.frame(dates=unique(temp$datesonly),ranks=rank(unique(temp$datesonly),ties.method="first"))
temp<-merge(temp,temp2,by.x="datesonly",by.y="dates")
temp尝试使用此

- library(lubridate)

date <- c("1990-02-02 01:00:00",
"1990-02-02 02:00:00",
"1990-02-03 01:00:00",
"1990-02-03 02:00:00",
"1990-02-04 01:00:00",
"1990-02-04 02:00:00")

number <- day(date)
cbind.data.frame(number,date)
-库(lubridate)
日期尝试使用此

- library(lubridate)

date <- c("1990-02-02 01:00:00",
"1990-02-02 02:00:00",
"1990-02-03 01:00:00",
"1990-02-03 02:00:00",
"1990-02-04 01:00:00",
"1990-02-04 02:00:00")

number <- day(date)
cbind.data.frame(number,date)
-库(lubridate)

日期此解决方案假定日期按时间顺序列出(或至少按天排序),并且日期实际格式为日期时间对象

temp <- data.frame(dates = c('1990-02-02 01:00:00',
                             '1990-02-02 02:00:00',
                             '1990-02-03 01:00:00',
                             '1990-02-03 02:00:00',
                             '1990-02-04 01:00:00',
                             '1990-02-04 02:00:00',
                             '1990-02-04 03:00:00'))
temp$dates <- as.POSIXct(temp$dates, tz = "GMT")
x <- table(as.Date(temp$dates))
temp$number <- rep(seq_along(x), x)
temp
#                 dates number
# 1 1990-02-02 01:00:00      1
# 2 1990-02-02 02:00:00      1
# 3 1990-02-03 01:00:00      2
# 4 1990-02-03 02:00:00      2
# 5 1990-02-04 01:00:00      3
# 6 1990-02-04 02:00:00      3
# 7 1990-02-04 03:00:00      3

此解决方案假定日期按时间顺序列出(或至少按天排序),并且日期实际格式为日期时间对象

temp <- data.frame(dates = c('1990-02-02 01:00:00',
                             '1990-02-02 02:00:00',
                             '1990-02-03 01:00:00',
                             '1990-02-03 02:00:00',
                             '1990-02-04 01:00:00',
                             '1990-02-04 02:00:00',
                             '1990-02-04 03:00:00'))
temp$dates <- as.POSIXct(temp$dates, tz = "GMT")
x <- table(as.Date(temp$dates))
temp$number <- rep(seq_along(x), x)
temp
#                 dates number
# 1 1990-02-02 01:00:00      1
# 2 1990-02-02 02:00:00      1
# 3 1990-02-03 01:00:00      2
# 4 1990-02-03 02:00:00      2
# 5 1990-02-04 01:00:00      3
# 6 1990-02-04 02:00:00      3
# 7 1990-02-04 03:00:00      3

我想你的意思是
as.Date
(大写
D
)?但我不确定这种方法是否会奏效。为大家干杯!我不确定是基于其他人的说法,但这个例子确实表明,应该按时间顺序给这些天分配一个等级,而不是一个月中的某一天——我自己对R还是比较陌生,所以如果一个等级不与
rank
,以及
ties.method=“first”
,看看有什么效果会很有趣,您将得到一个从1到数据行数的序列。用我的示例数据试试看,看看我的意思。+1用于根据注释进行编辑,以保持完整
unique
是您使用
rank
所寻找的,尽管在这一点上
相互关联。方法
没有意义:)合并
的一个优点是不需要先对数据进行排序。如果您对备选方案感兴趣,我刚刚发布了另一个作为我原始答案的编辑。我想你的意思是
as.Date
(大写
D
)?但我不确定这种方法是否会奏效。为大家干杯!我不确定是基于其他人的说法,但这个例子确实表明,应该按时间顺序给这些天分配一个等级,而不是一个月中的某一天——我自己对R还是比较陌生,所以如果一个等级不与
rank
,以及
ties.method=“first”
,看看有什么效果会很有趣,您将得到一个从1到数据行数的序列。用我的示例数据试试看,看看我的意思。+1用于根据注释进行编辑,以保持完整
unique
是您使用
rank
寻找的,尽管在这一点上
是相互关联的。方法
没有意义:)合并的一个优点是数据不需要先排序。如果您对备选方案感兴趣,我刚刚发布了另一个作为对原始答案的编辑。