2013-03-11 8 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 час интервалы и получить идентификатор, соответствующий этому конкретному часу ... Я решил использовать этот код data <- data2[seq(0, nrow(data2), by=5), ], но вместо времени, находящегося в 10-часовых интервалах ... Идентификационный номер находится через 10 интервалов .... но я не хочу, чтобы output..so далеко я получаю этот выход

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

Как ваши значения «Время» магически становятся кратными 10 в вашем выходе? – A5C1D2H2I1M1N2O1R2T1

+0

Нет первого выхода - это то, что я сделал в excel, но для R Я получаю вывод выше –

+1

Просьба предоставить образцы данных или воспроизводимый пример, чтобы хорошие люди здесь могли помочь вам лучше. См. Http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

ответ

0

Вы можете использовать %% (mod) оператор.

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

+0

Я получил этот вывод: <0 rows> (или 0-length row.names) ... печально –

+0

How вы получаете Время, так как кратное 10 - это другой вопрос. Вы не можете получить значение Time = 10, если в вашем наборе данных нет строки с Time = 10. –

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-го часа и т. д., какой идентификационный номер соответствует –

+0

. Сколько у вас данных и сколько 10-часовых интервалов? У вас есть галстук? т.е. значения времени c (40,1, 40,1, 40,2)? какой из них вы принимаете? – Sean

Смежные вопросы