我想知道在记录的每个出生日期分娩的独特水坝的数量.我的数据框与此类似:
dam <- c("2A11","2A11","2A12","2A12","2A12","4D23","4D23","1X23")
bdate <- c("2009-10-01","2009-10-01","2009-10-01","2009-10-01",
"2009-10-01","2009-10-03","2009-10-03","2009-10-03")
mydf <- data.frame(dam,bdate)
mydf
# dam bdate
# 1 2A11 2009-10-01
# 2 2A11 2009-10-01
# 3 2A12 2009-10-01
# 4 2A12 2009-10-01
# 5 2A12 2009-10-01
# 6 4D23 2009-10-03
# 7 4D23 2009-10-03
# 8 1X23 2009-10-03
Run Code Online (Sandbox Code Playgroud)
我曾经使用aggregate(dam ~ bdate, data=mydf, FUN=length)
但它计算了在特定日期生下的所有水坝
bdate dam
1 2009-10-01 5
2 2009-10-03 3
Run Code Online (Sandbox Code Playgroud)
相反,我需要这样的东西:
mydf2
bdate dam
1 2009-10-01 2
2 2009-10-03 2
Run Code Online (Sandbox Code Playgroud)
非常感激您的帮忙!
Jos*_*ich 13
关于什么:
aggregate(dam ~ bdate, data=mydf, FUN=function(x) length(unique(x)))
Run Code Online (Sandbox Code Playgroud)
您也可以先运行unique
数据:
aggregate(dam ~ bdate, data=unique(mydf[c("dam","date")]), FUN=length)
Run Code Online (Sandbox Code Playgroud)
然后你也可以使用table
而不是aggregate
,虽然输出有点不同。
> table(unique(mydf[c("dam","date")])$bdate)
2009-10-01 2009-10-03
2 2
Run Code Online (Sandbox Code Playgroud)