gpt4 book ai didi

r - 如何确定列是定量数据还是分类数据?

转载 作者:行者123 更新时间:2023-11-30 08:27:07 25 4
gpt4 key购买 nike

如果我有一个包含很多列的文件,数据都是数字,我如何知道特定列是分类数据还是定量数据?是否有针对此类问题的研究领域?如果不是,可以使用哪些启发式方法来确定?

我能想到的一些启发:

可能是分类数据

  • 对唯一值进行汇总,如果它是 < some_threshold ,成为分类数据的机会更高。
  • 如果数据高度集中(低标准)
  • 如果唯一值高度连续,并且从 1 开始
  • 如果列中的所有值都有固定长度(可能是 ID/日期)
  • 如果它的 p 值非常小,为 Benford's Law
  • 如果它在针对结果列的卡方检验中具有非常小的 p 值

可能是定量数据

  • 如果该列有 float 数字
  • 如果列具有稀疏值
  • 如果该列具有负值

其他

  • 也许定量数据更有可能接近/接近定量数据(反之亦然)

我正在使用 R,但问题不需要特定于 R。

最佳答案

这假设有人正确编码了数据。

也许您认为数据没有正确编码或标记,所有数据都是以数字形式输入的,其中一些确实是分类的。在这种情况下,我不知道如何才能确定地判断。分类数据可以有小数位并且可以为负数。

在这种情况下我会问自己的问题是我处理数据的方式有什么不同?

如果您对第二种情况感兴趣,也许您应该在 Stack Exchange 上提出您的问题。

my.data <- read.table(text = '
aa bb cc dd
10 100 1000 1
20 200 2000 2
30 300 3000 3
40 400 4000 4
50 500 5000 5
60 600 6000 6
', header = TRUE, colClasses = c('numeric', 'character', 'numeric', 'character'))

my.data

# one way
str(my.data)

'data.frame': 6 obs. of 4 variables:
$ aa: num 10 20 30 40 50 60
$ bb: chr "100" "200" "300" "400" ...
$ cc: num 1000 2000 3000 4000 5000 6000
$ dd: chr "1" "2" "3" "4" ...

以下是记录信息的方法:

my.class <- rep('empty', ncol(my.data))

for(i in 1:ncol(my.data)) {
my.class[i] <- class(my.data[,i])
}

> my.class
[1] "numeric" "character" "numeric" "character"

编辑

这是一种无需使用for循环即可记录每列的class的方法:

my.class <- sapply(my.data, class)

关于r - 如何确定列是定量数据还是分类数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21809192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com