我有一个存储不同长度前缀的表。表片段(ClusterTable)
ClusterTable[ClusterTable$FeatureIndex ==“Prefix2”,'FeatureIndex ',' FeatureValue')]
FeatureIndex FeatureValue
80 Prefix2 80
81 Prefix2 81
30 Prefix2 30
70 Prefix2 70
51 Prefix2 51
84 Prefix2 84
01 Prefix2 01
63 Prefix2 63
28 Prefix2 28
26 Prefix2 26
65 Prefix2 65
75 Prefix2 75
我写的csv文件使用如下:
write.csv(ClusterTable, file = "My_Clusters.csv")
特征值01丢失前导零。
我首先尝试将列转换为字符
ClusterTable$FeatureValue <- as.character(ClusterTable$FeatureValue)
并且还尝试将其附加到空字符串以在写入文件之前将其转换为字符串。
ClusterTable$FeatureValue <- paste("",ClusterTable$FeatureValue)
另外,在这个表中我有各种长度的前缀,所以我不能使用固定长度的简单格式说明符。即表也具有值001(前缀3)、0001(前缀4)等。谢谢
7条答案
按热度按时间gmol16391#
编辑:截至2021年8月5日再次测试,查找和替换方法不再起作用。:(使用“flash fill”的解决方法
我知道这是一个老问题,但我偶然发现了一个在Excel中打开.csv输出时保持前导零的解决方案。在用R编写.csv之前,在每个值的前面添加一个撇号,如下所示:
当您在excel中打开输出时,撇号将告诉excel保留所有字符,而不是删除前导零。
由于查找和替换确实会删除撇号和0(在较新的Excel版本中),另一种方法是添加一列并使用“快速填充”添加没有撇号的值。如果单元格中的值格式不同(例如在一些单元格中存在多于一个的数字),则“快速填充”的结果应当被双重检查,并且如果需要的话应当被调整。然后可以删除前一列。
此时,您可以将列格式化为“文本”,然后执行查找和替换以删除撇号(可能为此创建一个宏)。
1u4esq0p2#
如果你只是需要它的视觉效果,只需要在你写csv文件之前添加一行,如下所示:
它会在值的末尾添加一个字符,但它在Excel中是隐藏的。
wribegjk3#
将文件另存为csv文件,但扩展名为txt。然后使用
read.table
和sep=","
读取它:pgpifvop4#
如果您尝试使用Excel打开.csv,我建议您改为写入Excel。首先,你必须填充数据。
6ovsh4lw5#
这几乎是从R导出时可以采取的路线。这取决于要导出的数据类型和记录数(数据大小):
txt
是最好的路由,你可以导出到csv
,如果你知道你没有前导或尾随零的数据,要么使用txt
或xlsx
。导出到csv
很可能会删除零。xlsx
库更好xlsx
库可能依赖于java
,因此请确保使用不需要它的库xlsx
库在处理许多行时要么有问题,要么速度很慢,因此txt
或csv
仍然是更好的选择对于您的特定问题,似乎您不需要处理大量的行,因此您可以用途:
eoxn13cs6#
您必须使用
format
修改列:因此,当您导出到.csv时,前导零将继续存在。
xfb7svmp7#
在处理前导零时,如果导出到excel,则需要谨慎。Excel有一种超越自我的倾向,会自动删除前导零。你的代码是好的,否则在任何其他文本编辑器中打开文件应该显示零。