bir alt kümesi içinde boylamasına koordinatı ve enine çiftleri topluluğu ihtiva eden bir örnek, dataframe için ve bir amacı, bunların idi süreleri:listesi tüm değişkenler (ve bunların oranları) bir dataframe
bout <- structure(list(Date = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "02/02/2013", class = "factor"),
Time = structure(1:30, .Label = c("07:55:40", "07:55:50",
"07:56:00", "07:56:10", "07:56:20", "07:56:30", "07:56:40",
"07:56:50", "07:57:00", "07:57:10", "07:57:20", "07:57:30",
"07:57:40", "07:57:50", "07:58:00", "07:58:10", "07:58:20",
"07:58:30", "07:58:40", "07:58:50", "07:59:00", "07:59:10",
"07:59:20", "07:59:30", "07:59:40", "07:59:50", "08:00:00",
"08:00:10", "08:00:20", "08:00:30"), class = "factor"), Axis1 = c(0L,
0L, 100L, 500L, 233L, 155L, 60L, 0L, 0L, 115L, 80L, 878L,
158L, 0L, 13L, 0L, 0L, 25L, 10L, 45L, 33L, 43L, 655L, 498L,
41L, 151L, 404L, 436L, 28L, 0L), Latitude = c(56.52289678,
56.52291659, 56.52292762, 56.52295108, 56.52292694, 56.52292513,
56.5229401, 56.52294825, 56.52295531, 56.52296413, 56.52296976,
56.52292374, 56.52293053, 56.52292422, 56.52289636, 56.52288866,
56.52293357, 56.52290114, 56.5228365, 56.52280237, 56.52279844,
56.52281107, 56.52282589, 56.52279711, 56.52277008, 56.52278785,
56.52279951, 56.52269176, 56.52270186, 56.52269016), Longitude = c(-2.56573101,
-2.56578171, -2.56579263, -2.56578099, -2.56575181, -2.56574877,
-2.56575947, -2.5657653, -2.56577941, -2.56577104, -2.56577004,
-2.56576048, -2.56575937, -2.56582402, -2.56585538, -2.56579373,
-2.56572003, -2.56568263, -2.56568237, -2.56570739, -2.56570637,
-2.56571299, -2.56572322, -2.56566835, -2.56566237, -2.56569353,
-2.56571833, -2.56563307, -2.56565902, -2.56565666), area = structure(c(1L,
1L, 2L, 2L, 2L, 2L, 3L, 4L, 5L, 6L, 6L, 7L, 7L, 7L, 8L, 9L,
10L, 11L, 2L, 2L, 6L, 6L, 6L, 6L, 12L, 13L, 13L, 13L, 13L,
13L), .Label = c("E456", "E457", "E460", "E461", "E462",
"E463", "E465", "E468", "E469", "E470", "E471", "E478", "E479"
), class = "factor"), bout = c(0L, 0L, 1L, 1L, 1L,
1L, 1L, 0L, 0L, 2L, 2L, 2L, 2L, 2L, 2L, 0L, 0L, 0L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 0L)), .Names = c("Date",
"Time", "Axis1", "Latitude", "Longitude", "area", "bout"
), class = "data.frame", row.names = c(NA, -30L))
I oluşturmak isteyen Etkinlikle ilgili bir özet değişkenler. Ben normalde kullandığınızdan
bout$Date <- as.Date(bout$Date, origin = "1970-01-01", format = "%d/%m/%Y")
library(chron)
bout$Time <- times(as.character(bout$Time))
my.stats <- function(x) {
min.Date <- min(x$Date)
min.Time <- min(x$Time)
max.Time <- max(x$Time)
time.bout <- max.Time - min.Time
return(data.frame(min.Date, min.Time, max.Time, time.bout))
}
library(plyr)
ddply(bout, .(bout), my.stats)
bu değişkenlerin sonra da her etkinlik gerçekleşir alanların listesini istiyorum
:. Şimdiye kadar var
unique(unlist(bout$area, use.names = FALSE))
Ama merak ediyorum Bu alanların her birinde harcanan zamanın oranını nasıl bildireceğim? İdeal olarak, bunun yukarıdaki işleve entegre olmasını isterim. Her aktivite için hiçbir zaman 10'dan fazla alan olmamalıdır (bu yüzden daha az alan listelendiğinde boşluklardan memnunum).
bout area.1 time.area.1 area.2 time.area.2
2 E457 0.80 E460 0.20
3 E465 0.50 E463 0.33
herhangi bir fikir çok takdir:
Örneğin (sadece iki alanı gösteriliyor).
Teşekkür Chris ve @Hao - bu neredeyse haklı. Ancak, her bir veri satırının 10 saniyeyi temsil ettiği gerçeğini kaydetmek için kodu nasıl kullanırdım? (Örneğimi yazdığımda bunu gözardı ettiğim için özür dilerim). Yani, sadece bir alan listelendiğinde bazı zamanlar için, zaman 10 saniyeden daha fazla 0 mı? Bu 10 sn'yi eklemeye çalıştım: bout.result $ Dur <- bout.result $ Dur + (((10/60)/60)/24) ancak bu oranlar üzerinde çalışmıyor gibi görünüyor (örn. E456 Şu anda 06:07:00 'dan çıkıyor. Herhangi bir tavsiye minnettar olurdu, –
@ KT_1 Belki de deneyebilirsiniz bout.result <- setDT (bout) [order (bout), liste (Tarih = dk (Tarih), Dur = max (Zaman) - min (Zaman) + çarpı ("00:00:10")), by = c ("bout", "alan")] '? – Hao
@ KT_1 Sadece açıklığa kavuşturmak için, listelenen her bir" zaman "dır. 10 saniyelik bir olaya yol açan bir başlangıç zamanı? Eğer öyleyse, "End Time" olarak tanımlanan yeni bir "End Time" süresi yaratırdım - $ time + times ("00:00:10") 'dır. 'EndTime'ı yukarıdaki denklemi' time' yerine 'max()' içine koyun. Burada dikkatli olun, çünkü tüm nöbetlerin ardışık olduğunu varsayar (bu, orijinal işlevinizde gizlidir, istediğiniz gibi olduğundan emin olun). – Chris