簡體   English   中英

有條件的計算帶有R部分2的列中的值數

[英]Conditional calculating the numbers of values in column with R part 2

我有兩個向量:

x <- c(1,1,1,1,1, 2,2,2,3,3,  3,3,3,4,4,  5,5,5,5,5 )
y <- c(2,2,1,3,2, 1,4,2,2,NA, 3,3,3,4,NA, 1,4,4,2,NA)

在這里( 用R來有條件地計算列中的值的數量 )討論了以下問題:當X被組吐時,如何通過Y和X查找x中的值的平均值:

  if x<=2, group I
  if 2<x<=3, group II
  if 3<X<=5, group III

最好的解決方案由@ Mike.Gahan提供:

#Bring in data.table library
require(data.table)
data <- data.table(x,y)

#Summarize data
data[,list(x=mean(x,na.rm=T)),by=list(y,x.grp=cut(x,c(-Inf,2,3,5,Inf)))]  [order(y,x.grp)]

但是此解決方案不會在結果中放入帶有NA的行。

有人知道如何輸出結果中的所有行,包括帶有NA的行嗎?

現在的輸出是:

         y    x.grp    x
     1:  1 (-Inf,2] 1.500000
     2:  1    (3,5] 5.000000
     3:  2 (-Inf,2] 1.250000
     4:  2    (2,3] 3.000000
     5:  2    (3,5] 5.000000
     6:  3 (-Inf,2] 1.000000
     7:  3    (2,3] 3.000000
     8:  4 (-Inf,2] 2.000000
     9:  4    (3,5] 4.666667
    10: NA    (2,3] 3.000000
    11: NA    (3,5] 4.500000

其中X是每個組和Y的X中數字的平均值

答案是:

setkey(result, y, x.grp)
result[CJ(unique(y), unique(x.grp))]

感謝@eddi!

暫無
暫無

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

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