0
我有一個數據格式爲分組R參數
PERSON_A PERSON_B MEET LEAVE
,基本上說明了當PERSON_A相識時間滿足PERSON_B,他們說在此刻離開「再見」給對方。時間以秒錶示,並且在http://pastie.org/2825794(simple.dat)上有一小部分數據。
我需要的是計算按天分組的會議數。目前,我有一個可行的代碼,外觀並不漂亮。無論如何,我想要一個幫助,以便將它轉換成反映我試圖做的分組的代碼,例如使用ddply等。因此,我的主要目標是從這種情況中學習。也許有這個代碼很多錯誤關於R.
良好做法library(plyr)
data = read.table("simple.dat", stringsAsFactors=FALSE)
names(data)=c('PERSON_A','PERSON_B','MEET','LEAVE')
attach(data)
min_interval = min(MEET)
max_interval = max(LEAVE)
interval = max_interval - min_interval
day = 86400
number_of_days = floor(interval/day)
g = data.frame(MEETINGS=c(0:number_of_days)) # just to store the result
g[,1] = 0
start_offset = min_interval # start of the first day
for (interval in c(0:number_of_days)) {
end_offset = start_offset + day
meetings = (length(data[data$MEET >= start_offset & data$LEAVE <= end_offset, ]$PERSON_A) + length(data[data$MEET >= start_offset & data$LEAVE <= end_offset, ]$PERSON_B))
g[interval+1, ] = meetings
start_offset = end_offset # start next day
}
g
此代碼遍歷天(86400秒的時間間隔),並存儲在數據幀摹會議的次數。在鏈接數據集上執行時,此代碼的正確輸出(如下所示)爲每行(日)提供了會議的數量。
MEETINGS
1 38
2 10
3 16
4 18
5 24
6 6
7 4
8 10
9 28
10 14
11 22
12 2
13 .. 44 0 # I simplified the output here
45 2
不管怎樣,我知道,我可以用ddply得到會議的每對O節點數量:
contacts <- ddply(data, .(PERSON_A, PERSON_B), summarise
, CONTACTS = length(c(PERSON_A, PERSON_B)) /2
)
,但有一個巨大的山我這個,結果我需要之間。
作爲注完,我讀How to make a great R reproducible example?並盡我所能:)
感謝,
你的輸出沒有意義。你發佈的數據有97行,但你輸出中'會議'的總數遠遠超過了這個數字。你很可能重複計算一次會議,因爲總數是'194' – Ramnath
你可能希望用更簡單的方法使你的例子可重現:嘗試使用'dput(yourdataframe)'並粘貼結果。分別使用'dput(head(yourdataframe))'。 –