【问题标题】:R unique values countR唯一值计数
【发布时间】:2014-08-05 14:46:07
【问题描述】:

我有一个有 4 列的 data.frame。第 2 列有每个人的唯一 ID(“Cofecha”),第 4 列有给定个人所属的地块(“地块”)。 data.frame 中的每个个体多次出现。我正在尝试做两件事:(1)获取独特个体的数量,然后(2)找出每个情节中有多少独特个体。我可以找到唯一个体的总数(摘录中的 4 个),但我不知道如何计算每个情节的个体数量。任何帮助将不胜感激!

摘自原始data.frame:

dx1

用于查找唯一个体的代码:

dx2

我也尝试了“表格”,但它只给了我每个人出现的次数,而不是每个情节出现了多少独特的人:

表(dx1$Cofecha)

有没有办法根据姓名的前 3 个字符计算每个人的数量?前 3 个字符相当于情节 ID。

【问题讨论】:

  • 这个table(dx1$Plot) 不会和table(substr(dx1$Cofecha, 1,3)) 一样。还是with(dx1, tapply(as.character(Cofecha), list(Plot), FUN=function(x) length(unique(x))))
  • 最后一个选项正是我想要的! table(dx1$Plot) 和 table(substr(dx1$Cofecha, 1,3)) 给出或多或少相同的输出。但是您的最后一个解决方案效果很好;这正是我想要做的。谢谢!

标签: r count unique


【解决方案1】:

你可以试试

with(dx1, tapply(as.character(Cofecha), list(Plot), FUN=function(x) length(unique(x))))
#    AP1 AP3 IR1 SM2 
#     1   1   1   1 

或者

library(data.table)
setDT(dx1)[, list(UniqueIDs= length(unique(Cofecha))), by=Plot]
#      Plot UniqueIDs
#   1:  IR1         1
#   2:  AP1         1
#   3:  SM2         1
#   4:  AP3         1

【讨论】:

  • 第一个选项效果很好。我从没想过要使用应用功能。非常感谢!
【解决方案2】:

这是另一种方法:

library(dplyr)
dx1 %>%
  group_by(Plot) %>%
  summarize(distint_IDs = n_distinct(Cofecha))

#Source: local data frame [4 x 2]
#
#  Plot distint_IDs
#1  AP1           1
#2  AP3           1
#3  IR1           1
#4  SM2           1

还有一种使用基础 R 的可能性:

unlist(lapply(split(dx1, dx1$Plot), function(x) length(unique(x$Cofecha))))
#AP1 AP3 IR1 SM2 
#  1   1   1   1 

【讨论】:

    【解决方案3】:

    使用子字符串:

    table(substr(dx1$Cofecha, 1,3))
    

    给我

    AP1 AP3 IR1 SM2 
      9   2   9   5
    

    每一个都用唯一计数一次:

    table(substr(unique(dx1$Cofecha), 1,3))
    # AP1 AP3 IR1 SM2 
    #   1   1   1   1
    

    【讨论】:

    • 这适用于计算每个地块的个体总出现次数,但我想计算每个唯一个体的计数。在上面的示例中,我在 AP1 中只有 1 个唯一的个体(但是该个体有 9 个观察值)。有没有办法获得唯一的个人计数?
    • 是的。你上面的AP1计数是9;但是这 9 个计数中的每一个都针对一个人:AP1A001。我想找到一种方法,只计算每个人一次。
    • 完美!感谢您的选择!
    猜你喜欢
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    相关资源
    最近更新 更多