r - 如何仅将带有数字的单元格从R中数据框中的字符转换为数字并保存到excel文件
问题描述
我只想将具有数字的单元格转换为数字并将其保存到 excel 文件中。
例如,数据框与此类似。
df <- data.frame(row1 = c('agri','1','-', NA),row2 = c('3','import','6', 'food'), stringsAsFactors = F)
在我将它保存到一个excel文件之后
openxlsx::write.xlsx(df, "df.xlsx", row.names=FALSE)
excel文件中的数字是字符。
这是因为在数据框中,这些列是“char”。
> str(df)
'data.frame':4 obs。2个变量:
$ row1: chr "agri" "1" "-" 不适用
$ row2: chr "3" "import" "6" "food"
我尝试了 mutate() 和 transform()。但这些仅适用于整个专栏。
可以在R中做到吗?
任何帮助深表感谢。
解决方案
迟到的评论/回复。
tldr; 我不认为这是可能的。
openxlsx
确实允许单元格级别的格式(通过addStyle
),并且您可能很想addStyle
为不同的单元格定义不同的格式 à la
library(openxlsx)
wb <- createWorkbook()
addWorksheet(wb, "sheet1")
writeData(wb, sheet = 1, df)
addStyle(wb, sheet = 1, createStyle(numFmt = "TEXT"), row = 1, col = 1)
addStyle(wb, sheet = 1, createStyle(numFmt = "NUMBER"), row = 3, col = 1)
saveWorkbook(wb, "example.xlsx", overwrite = TRUE)
检查 Excel 文件显示,尽管 Excel 报告单元格 (row=3, col=1) 具有“数字”类别,但该单元格实际上仍属于“文本”类别(如小警告三角形所示)。
我不能说这是否是一个错误openxlsx
。
在我个人看来,这是为了更好。在一列中混合不同类型的数据是不好的做法,违背了 R 的基本数据结构的基本原理(因为 / 的元素/列的条目list
都data.frame
必须具有相同的数据类型),并且与“整洁数据”相反。
推荐阅读
- reactjs - “无法读取未定义的属性‘节点’” - Gatsby/GraphQL/Prismic
- python - 根据不同数据框中的匹配值将汇总列添加到熊猫数据框中
- android-studio - android studio中的底部导航栏
- node.js - mongoose 未连接到 mongodb 服务器
- c++ - 构建后立即在向量上调用 clear?
- python - 通过使用 read_csv() 从多个文件中读取数据来创建多级 DataFrame [已解决]
- javascript - 如何仅在交易完成后重定向?
- css-grid - 3x3 网格,中间列较宽,顶部和底部单元格较短,但不会改变两侧单元格的高度
- javascript - 使用 javascript 进行媒体查询
- c# - 使用 Clean Architecture 进行自定义实体验证