Форматирование вывода R-кадра данных - PullRequest
0 голосов
/ 09 февраля 2020

Итак, у меня в настоящее время есть фрейм данных в R, и я хочу экспортировать / записать его в текстовый файл, используя write.table ()

Вот пример фрейма данных:

ID      FirstName     LastName             Class
1000    John            NA                  C-02
1001    Jane            Wellington          C-03
1002    Kate            NA                  C-04
1003    Adam            West                C-05

Я хочу записать его в текстовый файл, где для каждой строки, если любое значение столбца равно NA, тогда оно не будет включать слово «NA», а перейдет к другому столбцу. Вывод, который я хочу:

1000    John      C-02
1001    Jane      Wellington      C-03
1002    Kate      C-04
1003    Adam      West       C-05

Пример, как показано, первая строка не имеет введенной фамилии, поэтому я перейду к следующему столбцу, предотвращая что-то вроде:

1000    John      NA      C-02

Я выполнил команду write.table ():

write.table(df, "student_list.txt", col.names = FALSE, row.names = FALSE, quote = FALSE, sep="\t")

Но проблема в том, что я получаю тот, где NA включен во второй упомянутый мной вывод.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2020

Я бы использовал apply для удаления NA s и преобразования строк в текстовые строки (используя paste) следующим образом:

data <- apply(df, 1, function(row){
  paste(row[!is.na(row)], collapse="\t")
})

write.table(data, "student_list.txt", col.names = FALSE, row.names = FALSE, quote = FALSE, sep="\t")

Вывод файла будет выглядеть следующим образом:

#1000   John    C-02
#1001   Jane    Wellington  C-03
#1002   Kate    C-04
#1003   Adam    West    C-05
0 голосов
/ 09 февраля 2020
library(tidyverse)

dta <- tribble(
  ~ID, ~FirstName, ~LastName, ~Class,
  1000, "John", NA, "C-02",
  1001, "Jane", "Wellington", "C-03",
  1002, "Kate", NA, "C-04",
  1003, "Adam", "West", "C-05"
)

dta %>%
  unite(column, everything(), sep = "  ") %>%
  mutate(column = str_remove_all(column, "NA  ")) %>%
  write.table("student_list.txt", col.names = FALSE, row.names = FALSE, quote = FALSE, sep = "\t")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...