Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 查找不同变量中出现的次数_R - Fatal编程技术网

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