R将数据帧列写入具有前导零的csv
我有一个存储不同长度前缀的表。。 表的片段(ClusterTable) ClusterTable[ClusterTable$FeatureIndex==“Prefix2”、“FeatureIndex”, “FeatureValue”)] 我使用以下命令写入csv文件:R将数据帧列写入具有前导零的csv,r,csv,export-to-csv,R,Csv,Export To Csv,我有一个存储不同长度前缀的表。。 表的片段(ClusterTable) ClusterTable[ClusterTable$FeatureIndex==“Prefix2”、“FeatureIndex”, “FeatureValue”)] 我使用以下命令写入csv文件: write.csv(ClusterTable, file = "My_Clusters.csv") 特征值01在前导零处丢失 我首先尝试将列转换为字符 ClusterTable$FeatureValue <- as.cha
write.csv(ClusterTable, file = "My_Clusters.csv")
特征值01在前导零处丢失
我首先尝试将列转换为字符
ClusterTable$FeatureValue <- as.character(ClusterTable$FeatureValue)
ClusterTable$FeatureValue在处理前导零时,如果导出到excel,则需要小心。Excel有一种比自己更聪明的倾向,会自动删除前导零。否则代码就可以了,在任何其他文本编辑器中打开文件都会显示零。我知道这是一个老问题,但我偶然发现了一个在excel中打开.csv输出时保留前导零的解决方案。在R中写入.csv之前,请在每个值的前面添加一个撇号,如下所示:
vector <- sapply(vector, function(x) paste0("'", x))
vector如果只是为了视觉效果,只需在编写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")
ClusterTable将文件另存为csv文件,但扩展名为txt。然后使用read.table
和sep=“,”
)读取它:
如果您试图用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")
库(openxlsx)
图书馆(dplyr)
可聚类%
变异(FeatureValue=as.character(FeatureValue),
FeatureValue=str_焊盘(FeatureValue,2,'左','0'))
write.xlsx(ClusterTable,“Filename.xlsx”)
这几乎是从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')
库(openxlsx)
#将Excel文件或工作簿对象中的数据读取到data.frame中
df您必须使用格式修改列:
format(your_data$your_column, trim = F)
因此,当您导出到.csv时,前导零将保持不变。我找到了相关问题,但这是用于阅读的,并且已修复了纵向问题。它究竟何时会丢失“0”?我试着用R写并打开“01”(作为字符),效果很好。在我的csv文件中,用任何文本编辑器打开它也可以正常工作。我使用这个csv文件作为另一个程序的源。如果我打开并签入csv,则没有前导zeros@karx,是否在excel中打开csv?我认为excel可能会变得聪明,自动删除前导零。@cdeterman你不知道我有多傻。非常感谢。在我的文本编辑器和wollah中查看它!每次将csv输入下一个预编程之前,我都会手动检查csv。只是想确定一下。谁知道过分谨慎会伤害你呢?这不是答案,不应该被标记为回答问题。杰弗的回答正确地回答了这个问题,而不是这个问题
library(openxlsx)
library(dplyr)
ClusterTable <- ClusterTable %>%
mutate(FeatureValue = as.character(FeatureValue),
FeatureValue = str_pad(FeatureValue, 2, 'left', '0'))
write.xlsx(ClusterTable, "Filename.xlsx")
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')
format(your_data$your_column, trim = F)