R 查找不同变量中出现的次数
我有一个数据框,里面有一些关于不同人群的数据。它们看起来像这样:R 查找不同变量中出现的次数,r,R,我有一个数据框,里面有一些关于不同人群的数据。它们看起来像这样: Year Item ID 2005 a 1234 2005 b 1234 2005 a 4567 2005 b 4567 2006 a 4567 2006 a 7894 我的数据有45000次观察,大约1000个不同的ID和10个不同的年份。我想找到一年以上出现的人的ID,我该怎么做?我曾想过按ID分离数据,看看结果数据是否有不同的年份,但这似乎不是最聪明的方法,可以按ID分割年份
Year Item ID
2005 a 1234
2005 b 1234
2005 a 4567
2005 b 4567
2006 a 4567
2006 a 7894
我的数据有45000次观察,大约1000个不同的ID和10个不同的年份。我想找到一年以上出现的人的ID,我该怎么做?我曾想过按ID分离数据,看看结果数据是否有不同的年份,但这似乎不是最聪明的方法,可以按ID分割
年份,然后只保留那些具有多个唯一年份的子组
list1 = lapply(split(df1$Year, df1$ID), unique)
list1 = list1[lengths(list1) > 1]
data.frame(ID = names(list1), count = lengths(list1))
# ID count
#4567 4567 2
使用dplyr
我们可以使用n_distinct
,只获取那些超过1年的ID
library(dplyr)
df %>%
group_by(ID) %>%
filter(n_distinct(Year) > 1) %>%
pull(ID) %>%
unique
#[1] 4567
带表的基本R备选方案
unique(df$ID)[rowSums(table(df$ID, df$Year) > 0) > 1]
#[1] 4567
我们可以获得重复的ID,然后在这些ID中获得重复的ID:
Dups<-df[duplicated(df$ID),]
Dups[duplicated(Dups$ID),]["ID"]
# ID
# 5 4567
Dups
Dups<-df[duplicated(df$ID),]
Dups[duplicated(Dups$ID),]["ID"]
# ID
# 5 4567