writexl icon indicating copy to clipboard operation
writexl copied to clipboard

Set default value for NAs

Open cortinah opened this issue 1 year ago • 2 comments

Hello, thanks for this package. Currently any NA values in a data frame are written to excel as blank cells. This is not always the desired behavior. Would it be possible to add a parameter such as na_value, that would for example allow the Excel file to display NAs as a customized value? e.g. na_value="Not available". This is difficult to do in R when the column type is numeric for example. However, Excel columns can have both numeric and string values. thank you very much.

cortinah avatar Jun 28 '24 14:06 cortinah

This is difficult to do in R when the column type is numeric for example.

What about converting the column to character before writing it to xlsx? Like so:

# Example data
df <- data.frame(x=c(1,2,NA,4))

# Convert x to character
df$x <- as.character(df$x)
df$x[is.na(df$x)] <- "Not available"

# Write to excel
writexl::write_xlsx(df, 'test.xlsx')


jeroen avatar Jun 28 '24 15:06 jeroen

Thank you, yes, indeed, this is what I have been doing, but it would be nice to be able to do it from the call in write_xlsx so user doesn't have to modify the original data frame.

What if you still want to use the numeric attributes of the df? then you have to make a copy just for writing to excel. read_xlsx has the nice parameter (na = "") which allows you to interpret values that are being read as NAs. It would be great if analogous to that write_xlsx also had a (na="") parameter. This allows for cleaner scripting. thanks!

cortinah avatar Jun 28 '24 17:06 cortinah