Как выделить столбцы в Excel, которые не удовлетворяют желаемому условию, используя R

Я надеюсь, что название было достаточно описательным или, по крайней мере, имело смысл. Так что я знаю, что вы можете выполнять все эти манипуляции с данными в R, но не все мои коллажи знают, как использовать R, поэтому я хотел сделать несколько файлов Excel, чтобы они могли на них смотреть.

Итак, я увидел, что есть некоторые пакеты, которые могут помочь мне в том, что я пытаюсь сделать, но я не уверен, как использовать их особым образом, который я себе представляю.

Итак, у меня есть набор данных, который выглядит примерно так, но в гораздо большем масштабе. Таким образом, каждый столбец имеет заголовок и будет иметь "да" или пробел в каждой ячейке. Что я хочу сделать, так это выделить весь столбец, если он пуст. Таким образом, в небольшом примере, который я сделал, в идеале я бы выделил образцы 1 и 2. Возможно ли это сделать в R, а затем экспортировать в документ Excel?

sample1 sample2 sample3 sample4
yes             yes
yes 
yes 
yes             yes

1 ответ

Решение

Предполагая, что пробелы являются NA в R, могут помочь следующие строки кода. Комментарии в коде для объяснений, где это необходимо.

library(openxlsx)

# find empty columns
columns_to_format <- which(sapply(df1, function(x) length(x) == sum(is.na(x)) ))
rows <- nrow(df1) + 1


wb <- createWorkbook()

# create style used for high lighting empty columns
highlight_cells <- createStyle(fgFill = "yellow")

# Add worksheet
addWorksheet(wb, "example")
writeData(wb, "example", x = df1)

# loop over columns to high light
for(i in seq_along(columns_to_format)) {
  addStyle(wb, "example", style = highlight_cells, rows = 2:rows, cols = columns_to_format[i])
}

saveWorkbook(wb, "Example.xlsx", overwrite = TRUE)

введите описание изображения здесь

данные:

df1 <- structure(list(sample1 = c("yes", "yes", "yes", "yes"), sample2 = c(NA_character_, 
NA_character_, NA_character_, NA_character_), sample3 = c("yes", 
NA, NA, "yes"), sample4 = c(NA_character_, NA_character_, NA_character_, 
NA_character_)), row.names = c(NA, -4L), class = "data.frame")
Другие вопросы по тегам