【问题标题】:How to index outliers?如何索引异常值?
【发布时间】:2012-12-30 11:34:00
【问题描述】:

我有以下数据。如何确定哪个作者发表的文章数量最多?

我试试这个

   (which(status$researchers==max(status$publications)) 

但它似乎不起作用。

#PUBLICATIONS

researchers = c("Smith", "Johnson", "Williams", "Brown", "Jones", "Miller", "Davis", "García", "Rodriguez", "Wilson", "Martinez", "Anderson", "Taylor", "Thomas", "Hernandez", "Moore", "Martin", "Jackson", "Thompson", "White", "Lopez", "Lee", "Gonzalez", "Harris", "Clark", "Lewis", "Robinson", "Walker", "Perez", "Hall", "Young", "Allen", "Sanchez", "Wright", "King", "Scott", "Green", "Baker", "Adams", "Nelson", "Hill", "Ramirez", "Campbell", "Mitchell", "Roberts", "Carter", "Phillips", "Evans", "Turner", "Stapel", "Torres", "Parker", "Collins", "Edwards", "Stewart", "Flores", "Morris", "Nguyen", "Murphy", "Rivera", "Cook", "Rogers", "Morgan", "Peterson", "Cooper", "Reed", "Bailey", "Bell", "Gomez", "Kelly", "Howard", "Ward", "Cox", "Diaz", "Richardson", "Wood", "Watson", "Brooks", "Bennett", "Gray", "James", "Reyes", "Cruz", "Hughes", "Price", "Myers", "Long", "Foster ", "Sanders", "Ross", "Morales", "Powell", "Sullivan", "Russell", "Ortiz", "Jenkins", "Gutierrez", "Perry", "Butler", "Barnes", "Fisher", "De Jong", "Jansen", "De Vries", "vd Berg", "Van Dijk", "Bakker", "Janssen", "Visser", "Smit", "Meijer", "De Boer", "Mulder", "De Groot", "Bos", "Smeesters", "Vos", "Peters", "Hendriks", "Van Leeuwen", "Dekker", "Brouwer", "De Wit", "Dijkstra", "Smits", "De Graaf", "Van der Meer", "Muller", "Schmidt", "Schneider", "Fischer", "Meyer", "Weber", "Schulz", "Wagner", "Becker", "Hoffmann", "Wagemakers",  "Molenaar", "Jansen", "White", "Bargh", "Dijksterhuis", "Poldermans", "Kanazawa", "Lynne", "Ling", "Vorst", "Borsboom", "Wicherts")

articles = data.frame(cbind(researchers, publications))
write.table(articles, file = "scientific status.txt", sep = " ")

status = read.table("scientific status.txt", header = TRUE, sep = "", quote = "\"'")     

【问题讨论】:

  • 我不认为您如何创建数据,更不用说{write,read}.table 步骤与此处相关。如果您提供数据样本会更有用,请参考stackoverflow.com/questions/5963269/…
  • 好吧,我认为创建能够创建数据会很有用。
  • 但是status的内容是什么?除非它们是整数,否则您不太可能得到任何匹配项。你的researchers 向量没有数字,所以max 会用这些字符串做一些有趣的事情。
  • 你如何定义“异常值”?

标签: r dataframe outliers


【解决方案1】:

不清楚您的数据代表什么。如果已经按作者汇总,即每个作者有一行,publications 列包含出版物数量,请执行以下操作:

status$researchers[which.max(status$publications)]

如果您的数据未汇总,即每篇文章有一个,您可以这样做:

tail(sort(table(status$researchers)), 1)

【讨论】:

  • 谢谢。这有帮助。如果我想知道发表了 30 篇文章的研究人员的姓名,那该怎么办?
  • 如果您的数据已经聚合,subset(status, publications >= 30)。如果没有聚合,which(table(researchers) >= 30.
【解决方案2】:

这不是一般的响应,但在这里你只需要提取重复。

researchers[duplicated(researchers)]
[1] "Jansen" "White"  ## this 2 authors have 1 publications more than others!

例如,要查看 ouliers,您可以这样做:

plot(table(researchers))

【讨论】:

    猜你喜欢
    • 2018-02-27
    • 1970-01-01
    • 2017-09-10
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2014-02-10
    • 2019-09-23
    相关资源
    最近更新 更多