簡體   English   中英

Group_by,條件求和並替換R中的變量

[英]Group_by, conditional sum and replace the variables in R

我想將這兩行從 STATA 轉換為 R 代碼:

bysort  sj hid: generate H = sum( d ) if f == 1 & ( d == 1 | d == 2 ) 
bysort  sj hid: replace  H = H[ _N ]  if f == 1 & ( d == 1 | d == 2 ) 

據我了解,結果應如下所示:

sj 隱藏 F d H
2000 27 0 1 0
2000 60 1 1 1
2000 302 1 1 3
2000 302 1 2 3
2000 302 1 3 0

我用了

H = ifelse(f==1 & (d==1 | d==2), ave(d,sj,hid, FUN = sum),0),

但是,我得到了這個結果:

sj 隱藏 F d H
2000 27 0 1 0
2000 60 1 1 1
2000 302 1 1 6
2000 302 1 2 6
2000 302 1 3 0

我想知道如何更改 R 中的代碼以在 hid 302 中獲得 H=3 而不是 6。另外,我想知道我應該如何編寫 R 代碼來獲得第二步,這給了我以下結果:

sj 隱藏 F d H
2000 27 0 1 0
2000 60 1 1 1
2000 302 1 1 3
2000 302 1 2 3
2000 302 1 3 0

有沒有類似於這樣的代碼的東西? 這個不行:

test_H %>%
    group_by(sj, hid) %>%
    if (f==1 & (d==1 | d==2)){
       H = replace(test_H,H,[_N])
       }

提前致謝。

感謝以上所有答案。 我只是發現這很有幫助。

如何使用ave()按條件對組中的變量求和?

它給了我現在想要的結果。

H=ifelse(f==1 & (d==1|d==2),ave(d*(d==1|d==2),sj,hid,FUN = sum),0)

暫無
暫無

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

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