[英]summarizing and grouping rows based on rank or order of data values in R
我的數據如下所示:
員工ID | 姓 | 名 | 單元 | 城市 | STATE | DATA_RANK |
---|---|---|---|---|---|---|
221 | 史密斯 | 吉爾 | X1 | 達拉斯 | 德克薩斯州 | 2 |
221 | 史密斯-吳 | 吉爾 | 德克薩斯州 | 1 | ||
331 | 德文 | 瑪麗 | X2 | 休斯頓 | 2 | |
331 | 中 | 瑪麗 | 休斯頓 | 德克薩斯州 | 1 | |
441 | 天鵝 | 安娜貝爾 | X2 | 奧本 | 加州 | 1 |
441 | 鴨 | 安娜 | X3 | 奧本 | 2 |
我試圖讓 output 看起來像這樣(按 EMPLOYEE_ID 分組行),並選擇 data_rank = 1 的行,其中有重復的員工 ID。
員工ID | 姓 | 名 | 單元 | 城市 | STATE | DATA_RANK |
---|---|---|---|---|---|---|
221 | 史密斯-吳 | 吉爾 | 德克薩斯州 | 1 | ||
331 | 中 | 瑪麗 | 休斯頓 | 德克薩斯州 | 1 | |
441 | 天鵝 | 安娜貝爾 | X2 | 奧本 | 加州 | 1 |
我嘗試使用以下代碼:
data <- data %>%
group_by(EMPLOYEE_ID, substr(LAST_NAME,0,4), substr(FIRST_NAME,0,3)) %>%
mutate_at(vars(-group_cols()),funs(na.locf(., na.rm = FALSE, fromLast = FALSE))) %>%
filter(row_number()==n())
但這並不能讓我來到這里。 有什么想法嗎? 謝謝!
您使用substr()
是否有原因?
我相信這段代碼應該可以工作。
data %>%
group_by(EMPLOYEE_ID) %>%
filter(DATA_RANK == 1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.