0

私は大規模なデータセットに取り組んでおり、すべてのサイトに共通の日付を見つけたいと思っています。

site <- c(1,1,1,2,2,2,2,3,3,4,4,4)
date <- c("4th Nov","5th Nov","6th Nov","5th Nov","6th Nov","7th Nov","8th Nov","5th Nov","6th Nov","6th Nov","7th Nov","8th Nov")
temperature <- c(3,5,7,3,6,8,5,3,5,7,8,9)
data <- data.frame(site,date,temperature)

common.dates(data)
[1] "6th Nov"

どんな助けでもいただければ幸いです。ありがとう!

4

3 に答える 3

6

、、、および:の組み合わせで動作しsplitますintersectReduce

Reduce(intersect, split(data$date, data$site))

[1] "6th Nov"
于 2013-03-18T16:07:16.837 に答える
2

使用する1つの方法plyr

with(ddply(data, .(date), function(x) all(1:4 %in% x$site)), date[V1 == TRUE])
# [1] 6th Nov
于 2013-03-18T15:52:13.323 に答える
1

あなたはそれを行うことができます(それが最適化されていなくても):

dates <- union(NULL,data$date)
sites <- union(data$site,NULL)

w <- array(0,length(dates)) # number sites per date
for (i in sites)
    for (j in 1:length(dates))
        w[j] <- w[j] + dates[j] %in% data$date[data$site==i]

dates[w == length(sites)] # returns the dates common to all sites
于 2013-03-18T15:49:39.327 に答える