我有一个存储不同长度前缀的表。 表格的片段(ClusterTable)
ClusterTable [ClusterTable $ FeatureIndex ==" Prefix2",' FeatureIndex', ' FeatureValue&#39)]
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)等。 感谢
答案 0 :(得分:3)
在处理前导零时,如果导出为excel,则需要谨慎。 Excel倾向于超越自己并自动修剪前导零。您的代码很好,否则在任何其他文本编辑器中打开文件应显示零。
答案 1 :(得分:3)
我知道这是一个老问题,但是当我在excel中打开.csv输出时,我遇到了一个保持前导零的解决方案。在R中编写.csv之前,在每个值的前面添加一个撇号,如下所示:
vector <- sapply(vector, function(x) paste0("'", x))
当您在excel中打开输出时,撇号将告诉excel保留所有字符而不会丢弃前导零。此时,您可以将列格式化为&#34; text&#34;然后执行查找和替换以删除撇号(可能为此创建一个宏)。
答案 2 :(得分:1)
将文件另存为csv文件,但扩展名为txt。然后使用sep=","
与write.csv(ClusterTable,file="My_Clusters.txt")
read.table(file=My_Clusters.txt, sep=",")
:
import * as _angular_ from 'angular';
declare global {
const angular: typeof _angular_;
}
答案 3 :(得分:0)
如果您只是需要视觉效果,只需在编写csv文件之前添加一行,如下:
ClusterTable <- read.table(text=" 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",
colClasses=c("character","character"))
ClusterTable$FeatureValue <- paste0(ClusterTable$FeatureValue,"\t")
write.csv(ClusterTable,file="My_Clusters.csv")
它在值的末尾添加了一个字符,但它隐藏在Excel中。
答案 4 :(得分:0)
如果您尝试使用Excel打开.csv,我建议您写入excel。首先,你必须填充数据。
library(openxlsx)
library(dplyr)
ClusterTable <- ClusterTable %>%
mutate(FeatureValue = as.character(FeatureValue),
FeatureValue = str_pad(FeatureValue, 2, 'left', '0'))
write.xlsx(ClusterTable, "Filename.xlsx")
答案 5 :(得分:0)
这几乎是从R导出时可以采用的方法。这取决于要导出的数据类型和记录数(数据大小):
如果您有很多行(例如成千上万),txt
是最佳路线,则可以导出到csv
,前提是您知道数据中没有开头或结尾的零,使用txt
或xlsx
格式。导出到csv
很有可能会删除零。
如果您不处理很多行,那么xlsx
库会更好
xlsx
库可能取决于java
,因此请确保使用不需要的库
xlsx
库在处理许多行时是有问题的还是速度较慢,因此txt
或csv
仍然是更好的方法
对于您的特定问题,看来您不需要处理大量的行,因此可以使用:
library(openxlsx)
# read data from an Excel file or Workbook object into a data.frame
df <- read.xlsx('name-of-your-excel-file.xlsx')
# for writing a data.frame or list of data.frames to an xlsx file
write.xlsx(df, 'name-of-your-excel-file.xlsx')
答案 6 :(得分:-1)
您必须使用format
修改您的列:
format(your_data$your_column, trim = F)
因此,当您导出到.csv时,前导零将继续存在。