2

我有一个包含四个变量的数据框:“Period”、“cell_id”、“daterank”和“timerank”。我想按各个时期获得每个日期和每个小时的单元格 id 的频率(有 115 个唯一级别(或 cell_id 的))。“Period”是个人(5 个人)的数字标识符 “daterank” 具有值 0-29 “timerank” 具有值 1-24 “cell_id”是空间网格(在地图上)内的单元格的数字标识符。示例值为 101,102,103,104,105,201..205,2401..2405。

到目前为止,我能想到的唯一方法是:

####get data by period######2051, 2483, 2507, 2627, 2723###
##tag2051##
tag2051 = subset(fr10000, Period=="2051") ###where fr10000 is the object
head(tag2051)
(d11 = subset(tag2051, daterank=="11")) 
###here, I have to go through each daterank and
timerank combination = wate of time!!
t11h2= subset(d11, timerank=="2")
t11h2
frqt11h2= table(t11h2$cell_id)
cbind(frqt11h2)

有没有办法我可以通过“Period”获取每个“daterank”和每个“timerank”的“cell_id”频率,而无需手动更改 daterank 和 timerank 值输入?

4

2 回答 2

1

你不能这样做吗?

with( dat, table(cell_id, daterank, timerank, Period))

如果您只想获得评论中的 4 个项目:2051、2483、2507、2627、2723,那么只需将数据元素限制为它们或我们使用 %in% 短语。

于 2013-08-12T16:11:31.087 回答
1

未测试(使用以下函数之前应格式化日期和时间,mydata是您的数据)

library(plyr)
ddply(mydata,.(cell_id,daterank,timerank), transform,freq=length(cell_id))
于 2013-08-12T16:01:19.407 回答