在R中计算日期(作为一个类)

在R中计算日期(作为一个类),r,R,假设我在R中有一个简单的数据帧,如下所示: #example data frame a = c("red","red","green") b = c("01/01/1900","01/02/1950","01/05/1990") df = data.frame(a,b) colnames(df)<-c("Color","Dates") #示例数据帧 a=c(“红色”、“红色”、“绿色”) b=c(“1900年1月1日”、“1950年2月1日”、“1990年5月1日”) df=数据帧(a,

假设我在R中有一个简单的数据帧,如下所示:

#example data frame
a = c("red","red","green")
b = c("01/01/1900","01/02/1950","01/05/1990")
df = data.frame(a,b)
colnames(df)<-c("Color","Dates")
#示例数据帧
a=c(“红色”、“红色”、“绿色”)
b=c(“1900年1月1日”、“1950年2月1日”、“1990年5月1日”)
df=数据帧(a,b)

colnames(df)我们可以使用
data.table

library(data.table)
setDT(df)[, .(Dates = uniqueN(Dates)) , Color]
#   Color Dates
#1:   red     2
#2: green     1
或在R基中:

sapply(split(df, df$Color), nrow)
# green   red 
#     1     2 

使用tidyverse中的
dplyr
软件包:

library(dplyr)
df %>% group_by(Color) %>% summarise(n())
# # A tibble: 2 × 2
#    Color `n()`
#   <fctr> <int>
# 1  green     1
# 2    red     2
库(dplyr)
df%%>%分组依据(颜色)%%>%汇总(n())
##A tible:2×2
#颜色'n()`
#    
#1绿色1
#2红色2

这会起作用,但如果日期不唯一怎么办?因此,以红色为例,两个日期都是“01/01/1900”@knaslund使用这个答案将是1。你对那个案子的期望是什么?你需要
setDT(df)[,(Dates=.N),Color]
ah,是的,这看起来会非常有效!非常感谢。我最喜欢这个,太棒了。非常感谢。然而,一个复杂的情况是,假设有一个红色的NA,如下所示:
A=c(“红色”、“红色”、“红色”、“绿色”)
b=c(“01/01/1900”、“01/02/1950”、“NA”、“01/05/1990”)
df=data.frame(A,b)
NA
值开始:
df
library(dplyr)
df %>% group_by(Color) %>% summarise(n())
# # A tibble: 2 × 2
#    Color `n()`
#   <fctr> <int>
# 1  green     1
# 2    red     2