【发布时间】:2014-05-28 20:55:33
【问题描述】:
我正在分析一组包含多个重复 ID 和年份的数据。我正在尝试按年计算唯一 ID。我可以使用 unique() 计算所有年份的唯一 ID。我尝试将 table() 和 aggregate() 与 unique() 和 length() 一起使用,但得到“unique() 仅适用于向量”错误。我写了一个有效的“for”循环,但必须有更简单的方法来做到这一点。
这是“for”循环的示例代码:
years <- as.factor( c( rep("2001",3), rep("2002", 5), rep( "2003", 4)))
id <- as.factor( rep(1:6,2))
mydata <- data.frame( years, id )
attach( mydata )
levels.year <- levels( years)
id.by.year <- data.frame( Year = 1:3, Counts = rep(NA, 3) )
for ( i in 1:3 ){
id.by.year[i,1] <- levels.year[i]
mydata.by.year <- mydata[ years == levels.year[i],]
id.by.year[i,2] <- length( unique( mydata.by.year$id))
}
id.by.year
输出如下所示:
Year Counts
1 2001 3
2 2002 5
3 2003 4
【问题讨论】:
-
您想要一个简单的频率表?尝试:表(年)
-
你应该使用
data.frame(.)直接创建一个data.frame。不要使用cbind,然后将其转换为data.frame。因为cbind将其转换为一个矩阵,其中所有列 have 为同一类型! -
谢谢,阿伦。感谢您的建议。