R:subset()函数将字符数据改为奇怪的代码
我使用openxlsx
包中的read.xlsx()
将一些数据读入R,这里是我读取数据的代码:
data_all = read.xlsx(xlsxFile = paste0(path, EoLfileName), sheet = 1, detectDates = T, skipEmptyRows = F)
现在,当我访问我的数据中的一个名称单元格时,它将以字符forms打印名称:
> data_all[1,'name'] [1] "76-ES+ADVIP-20G"
现在,让我们说我想基于一个条件在另一个柱上的某些行子集:
data_sub = subset(data_all, !is.na(data_all$amount))
然而,如果我打印这个子集的数据,我会得到:
> data_sub[1,'name'] [1] "A94198.10"
我也尝试使用下面的方法做子集:
data_sub = data_all[!is.na(data_all$amount),]
但是我得到了同样的结果:“76-ES + ADVIP-20G”的预期输出将变成“A94198.10”
我使用mode()
和str()
对data_all$name
和data_sub$name
进行了多次检查,都返回了字符,所以它们格式正确。
这里有一个惊人的数据链接: https ://drive.google.com/file/d/0BwIbultIWxeVY1VtdDU5NFp1Tkk/view?usp=sharing
请帮助我! 我很困难,我没有看到类似的问题的其他职位。 为什么会发生这种情况? 子集不应该改变数据格式正确? 预先感谢您的帮助!
附加说明(如果有帮助):所以当我试图debugging,我注意到,当我在RStudio中查看data_all,如果我复制并粘贴名称“76-ES + ADVIP-20G”到filter栏中,它实际上找不到它; 我不得不input“76-ES”,只要我input下一个字符“+”,RStudio数据视图filter会说“找不到匹配的logging”