下面的代碼創建兩個資料集
df1 <-
read.table(textConnection("ID Code Date1 Date2
1 I611 01/01/2021 03/01/2021
2 L111 04/01/2021 09/01/2021
3 L111 01/01/2021 03/01/2021
4 Z538 08/01/2021 11/01/2021
5 I613 08/08/2021 09/09/2021
"), header=TRUE)
df2 <-
read.table(textConnection("ID State
1 Washington
49 California
1 Washington
40 Texas
1 Texas
2 Texas
2 Washington
50 Minnesota
60 Washington"), header=TRUE)
我希望實作的是在第二個資料集中搜索在第一個資料集“ID”列中至少出現一次的 ID 值,然后通過第二個資料集中的“狀態”列對匹配項進行分組。所以輸出將是:
狀態 | 身份證 |
---|---|
華盛頓 | 3 |
德克薩斯州 | 2 |
任何幫助將不勝感激 - 謝謝。
uj5u.com熱心網友回復:
根據df1過濾df2,然后聚合:
aggregate(ID ~ State, data = df2[ df2$ID %in% df1$ID, ], length)
# State ID
# 1 Texas 2
# 2 Washington 3
uj5u.com熱心網友回復:
dplyr::semi_join()
對于根據另一個表中的值過濾一個表很有用。然后,您可以count()
在過濾表中出現每個狀態。
library(dplyr)
semi_join(df2, df1) %>%
count(State, name = "IDs")
Joining, by = "ID"
State IDs
1 Texas 2
2 Washington 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/524527.html
標籤:r
上一篇:如何在R中添加已經分組的行?
下一篇:使用資料框向函式輸入值并聚合輸出