在R

时间:2016-12-11 00:26:46

标签: r class numerical categorical-data

我正在R中导入一个大型数据集,并且好奇是否有办法快速浏览列并确定该列是否具有分类值,数字,日期等。当我使用str(df)或{{ 1}},列大部分都被错误标记。

例如,某些列标记为数字,但列中只有10个唯一值(范围从1-10),表明它应该是一个因素。还有其他列只有11个唯一值表示评级,从0到0.5,增量为0.5。另一列有国家代码(172个值),范围从1-230。

有没有办法快速确定列是否应该是一个因素而不通过每个列来理解变量的性质? (数据集中有许多列)

谢谢!

目前,我一直在使用以下代码的变体来捕获前两种情况:

class(df)

然而,这种方法假设每个变量等间隔(例如,递增0.5)并且仅测试最后两个值之间的空间。这不会捕获包含c(1,2,3.5,4.5,5,6)的列,该列具有6个唯一值,但中间的间距不均匀(不是这在我的数据集中很常见)。

1 个答案:

答案 0 :(得分:1)

不清楚有多少不同的值表示因子与数字变量,但您可以检查所有变量以查看数据中的内容

table(sapply(df, function(x) { length(unique(x))} ))

如果您确定因子与数字之间的边界为k,则可以使用

识别因子
which(sapply(df, function(x) {length(unique(x)) < k}))