Как выделить столбцы в Excel, которые не удовлетворяют желаемому условию, используя R - PullRequest
0 голосов
/ 05 сентября 2018

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

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

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

sample1 sample2 sample3 sample4
yes             yes
yes 
yes 
yes             yes

1 Ответ

0 голосов
/ 05 сентября 2018

Предполагая, что пробелы являются 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)

enter image description here

данные:

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")
...