子集化时,列值会损坏

时间:2016-12-14 19:26:10

标签: r

我遇到子集问题。当我对数据集进行子集化时,生成的子集中的几列用0' s填充,这些列的变量类已更改为unknown。这与某些子集一致。受影响的列在受影响的子集之间有所不同

我不明白为什么会这样。我所做的只是一个简单的子集命令。为什么R会丢失4列整数数据并用无意义替换它。

令人讨厌的代码就是这个简单的命令:

table.al = subset(bamboo_compounds,bamboo_compounds$CClass=="aldehyde")

原始数据集如下所示:

Screenshot

结果子集如下所示:

Screenshot

这四列应填充数值数据。

除了加载.csv文件然后创建该数据的子集之外,我几乎没有做任何其他事情。请问,有人可以告诉我可能导致这种情况以及如何避免这种情况吗?

1 个答案:

答案 0 :(得分:1)

您确定您的数据确实已损坏吗?我们在子集中包含的顶视图(整个数据集)中可以看到的唯一一行是第15行:读取

unknown aldehyde,aldehyde,yes,NA,0.00000,0.00000,0.00000,...

下方视图中显示的是

unknown aldehyde,aldehyde,yes,NA,0.00000,0.00000,0,0,...

也就是说,我能看到的唯一的事物是最后两列的格式(这可能是因为子集中这些列的所有值都是零,所以没有必要打印所有小数位。)

对于“未知列类型”的事情,我认为这只是RStudio的奇怪之处。当我手动输入此数据集时

d <- read.csv(text=
 '"unknown aldehyde","aldehyde","yes",NA,0.0000,0.0000,0,0',
 header=FALSE)

并在RStudio中查看它我在最后四列看到了那些“未知”标签。但是,当我问R这些列有哪个类时,它们是数字(或整数)。

sapply(d,class)
       V1        V2        V3        V4        V5        V6        V7 
 "factor"  "factor"  "factor" "logical" "numeric" "numeric" "integer" 
       V8 
"integer" 

我无法在RStudio查看器中找到关于这个“column x:unknown”标签的任何内容(这无疑令人困惑);可能值得在RStudio论坛上询问这个问题吗?