2013-03-11 31 views
0

所以我有一個關於身份證號碼和時間[R計劃 - 讓依賴於另一列特定值

Id number Time(hr) 
1 5 
2 6.1 
3 7.2 
4 8.3 
5 9.6 
6 10.9 
7 13 
8 15.1 
9 17.2 
10 19.3 
11 21.4 
12 23.5 
13 25.6 
14 27.1 
15 28.6 
16 30.1 
17 31.8 
18 33.5 
19 35.2 
20 36.9 
21 38.6 
22 40.3 
23 42 
24 43.7 
25 45.4 

我想這個輸出

Time Id number 
    10 5 
    20 10 
    30 16 
    40 22 

因此,我希望時間在10時數據間隔和獲得相應的特定小時ID ...我決定使用此代碼data <- data2[seq(0, nrow(data2), by=5), ],而不是在10小時間隔的時間...身份證號碼在10間隔......但我不想要輸出..迄今我得到這個輸出

Id.number Time..s. 
     10  19.3 
     20  36.9 
+1

您的「時間」值在輸出中如何神奇地變爲10的倍數? – A5C1D2H2I1M1N2O1R2T1 2013-03-11 10:35:31

+0

沒有第一個輸出只是我在Excel中做的事情,但是對於R我在上面輸出輸出 – 2013-03-11 11:31:28

+1

請給出樣本數據或可重複的示例,以便這裏的好人可以幫助您更好。見http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – 2013-03-11 12:12:08

回答

0

您可以使用%%(mod)運算符。

data[data$Time %% 10 == 0, ]

+0

我得到這樣的輸出:<0 rows>(或長度爲0的row.names)......可悲的是 – 2013-03-11 11:33:45

+0

如何你是否得到時間爲10的倍數是不同的問題。你不能讓時間= 10的值,如果在你的數據與時間= 10 – 2013-03-11 11:35:50

0

我用cut()cumsum(table()),但我不完全得到你期待的答案。你究竟如何計算這個?

# first load the data 
v.txt <- '1 5 
2 6.1 
3 7.2 
4 8.3 
5 9.6 
6 10.9 
7 13 
8 15.1 
9 17.2 
10 19.3 
11 21.4 
12 23.5 
13 25.6 
14 27.1 
15 28.6 
16 30.1 
17 31.8 
18 33.5 
19 35.2 
20 36.9 
21 38.6 
22 40.3 
23 42 
24 43.7 
25 45.4' 
# load in the data... awkwardly... 
v <- as.data.frame(matrix(as.numeric(unlist(strsplit(strsplit(v.txt, '\n')[[1]], ' +'))), byrow=T, ncol=2)) 
tens <- seq(from=0, by=10, to=100) 
v$cut <- cut(v$Time, tens, labels=tens[-1]) 
v2 <- as.data.frame(cumsum(table(v$cut))) 
names(v2) <- 'Time' 
v2$Id <- rownames(v2) 
rownames(v2) <- 1:nrow(v2) 
v2 <- v2[,c(2,1)] 
rm(v, v.txt, tens) # not needed anymore 
v2 # the answer... but doesn't quite match your expected answer... 

    Id Time 
1 10 5 
2 20 10 
3 30 15 
4 40 21 
5 50 25 
+0

所以,我想是時候被分成10周小時的間隔......和10時,20小時沒有設置排etc的哪個ID號對應 – 2013-03-11 11:36:21

+0

你有多少數據,以及有多少個10小時的間隔?你有領帶嗎?即c的時間值(40.1,40.1,40.2)?你選哪一個? – Sean 2013-03-11 12:07:47