【问题标题】:How to count all unique values in a data.frame如何计算 data.frame 中的所有唯一值
【发布时间】:2013-09-18 19:09:16
【问题描述】:

我有一个数据框,其中将诊断作为变量,将患者作为观察结果。它包含 32 个变量和 5000 个观测值。

请看这个例子。

我的目标是统计和总结数据框中的所有诊断

set.seed(1)
Data <- data.frame(id = seq(1, 10), 
Diag1 = sample(c("A123", "B123", "C123"), 10, replace = TRUE), 
Diag2 = sample(c("D123", "E123", "F123"), 10, replace = TRUE), 
Diag3 = sample(c("G123", "H123", "I123"), 10, replace = TRUE), 
Diag4 = sample(c("A123", "B123", "C123"), 10, replace = TRUE), 
Diag5 = sample(c("J123", "K123", "L123"), 10, replace = TRUE), 
Diag6 = sample(c("M123", "N123", "O123"), 10, replace = TRUE), 
Diag7 = sample(c("P123", "Q123", "R123"), 10, replace = TRUE))
Data
class(Data)
mode(Data)

我知道如何使用 plyr 包为一栏做到这一点

NoDiag1 <- count(Data, "Diag1")

如何为整个数据框而不是一个变量执行此操作?

如果这是不可能的,我如何将第 1-7 列添加到一列,以便我可以对这个“合并”列使用计数功能?

【问题讨论】:

  • 你的意思是计算所有字符还是只计算非数字字符? ("AB12" 2 还是 4 也是如此?)
  • 为什么不简单地count(Data[,-1])
  • 您好。我想知道整个数据框中有多少个“AB123”。您可以将“AB123”与“狗”交换,将“B123”与猫交换。然后我想知道“狗”和“猫”这两个词在数据框中出现的频率。
  • 计算“字符”的请求令人困惑。您应该要求“唯一值”或“令牌”或“诊断”或类似的东西。 “AB123”一共有5个字符。
  • @DWin 谢谢你的建议。我会改变的。

标签: r count dataframe token plyr


【解决方案1】:

这是一种没有 plyr 的方法,使用 table:

## Data[,-1] is the complete data.frame without the "id" column
table(unlist(Data[,-1]))

# A123 B123 C123 D123 E123 F123 G123 H123 I123 J123 K123 L123 M123 N123 O123 P123 Q123 R123 
#    5    8    7    2    3    5    4    4    2    1    4    5    4    5    1    4    3    3

【讨论】:

    猜你喜欢
    • 2018-02-23
    • 2019-11-29
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 2019-08-01
    • 2012-08-30
    • 1970-01-01
    相关资源
    最近更新 更多