簡體   English   中英

R與rle函數聚合

[英]R Aggregate with rle function

掙扎着這個:
樣本數據 :

    foo <- structure(c("1", "1", "1", "1", "1", "1", "2", "2", "2", "2",
"2", "2", "2", "2", "2", "C", "C", "C", NA, NA, NA, NA, "C",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "C",
"C", NA, NA, NA, NA, NA, "C", "C", "C", "C", "C", "C", "C", "C",
"C", "C", "C", NA, NA, NA, NA, "C", "C", "C", "C", "C", "C",
"C", "C", NA, NA, NA, NA, NA, NA, NA, NA, "C", "C", "C", NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "C", "C", "C", NA, NA,
NA, NA, NA, "C", "C", NA, NA, NA, NA, NA, "C", "C", "C", NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "C", "C", NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "C", "C", "C", "C",
"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C",
"C", NA, NA, "C", "C", "C", "C", "C", NA, "C", "C", "C", "C",
"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C",
"C", "C", NA, NA, "C", "C", NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA), .Dim = c(15L, 13L), .Dimnames = list(NULL, c("weeks",
"vv", "rv", "ja", "aa", "bv", "aj", "vb", "rj", "rr", "vr", "bb",
"jr")))

如何按周分組這些數據並應用rle函數? 預期產出將是:

out <- structure(c("weeks", "1", "2", "vv", "1", "1", "rv", "0", "1",
"ja", "1", "1", "aa", "1", "1", "bv", "1", "0", "aj", "1", "1",
"vb", "1", "0", "rj", "1", "0", "rr", "1", "1", "vr", "2", "2",
"bb", "1", "1", "jr", "1", "0"), .Dim = c(3L, 13L), .Dimnames = list(
    NULL, NULL))

到目前為止嘗試過:

test <- aggregate(foo, by=data.frame(foo[,1]), function(x,na.rm=T) rle(as.numeric(x))$values)

給我一個列表(正如預期的那樣)然后我可以計算並嘗試獲得預期的輸出。 但我確信有一種更清潔的方法來實現這一點......任何想法?

謝謝你的期待!

我結束了非常相似的事情......不確定你正在尋找哪個答案:

aggregate(list(foo[, -1]), list(weeks = foo[, 1]), 
          function(x) length(na.omit(rle(x)$values)))

  weeks vv rv ja aa bv aj vb rj rr vr bb jr
1     1  1  0  1  1  1  1  1  1  1  2  1  1
2     2  1  1  1  1  0  1  0  0  1  2  1  0

顯然是一堆處理rle輸出的方法; 這是另一個。

d <- data.frame(foo)
aggregate(!is.na(d[,-1]), d[,1,drop=FALSE], function(x) sum(rle(x)$values))
#   weeks vv rv ja aa bv aj vb rj rr vr bb jr
# 1     1  1  0  1  1  1  1  1  1  1  2  1  1
# 2     2  1  1  1  1  0  1  0  0  1  2  1  0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM