簡體   English   中英

如何在R中包含太多NA的情況下壓縮數據集?

[英]How to condense dataset with too many NAs in R?

我有一個數據集,我想將每個項目壓縮為一行,但是到目前為止,它填充了很多NA,因此有關該項目的每一行都有一條信息。 它的示例如下所示:

ID     Title             Composer           Lyricist          Illustrator
a0018  My Western Rose   NA                 NA                NA
a0018  NA                Lincoln, Harry J.  NA                NA
a0018  NA                NA                 Vandersloot, F.W. NA
a0018  NA                NA                 NA                Dittmar, W.J.

如何獲得此信息,以便每個ID都只有一行包含所有信息?

使用dplyr::summarise_at的解決方案可以實現為:

library(dplyr)
df %>% group_by(ID) %>%
  summarise_at(vars(Title:Illustrator), funs(.[!is.na(.)])) %>%
  data.frame()

#      ID           Title          Composer          Lyricist   Illustrator
# 1 a0018 My Western Rose Lincoln, Harry J. Vandersloot, F.W. Dittmar, W.J
# 

數據

df <- read.table(text =
"ID     Title             Composer           Lyricist          Illustrator
a0018  'My Western Rose'   NA                 NA                NA
a0018  NA                'Lincoln, Harry J.'  NA                NA
a0018  NA                NA                 'Vandersloot, F.W.' NA
a0018  NA                NA                 NA                'Dittmar, W.J.'",
header = TRUE, stringsAsFactors = FALSE)

使用tidyverse套件套件,嘗試

clean_df <- df %>%
   gather(key, value) %>%
   drop_na(value) %>%
   gather(key, value)

如果您不熟悉管道運算符( %>% ),它將使用上一個函數的結果並將其作為下一個函數的第一個參數插入。 首先,它只是使閱讀代碼更容易。

我認為這可以滿足您的需求。 粗線只是為了將數據放入可重現的data.frame中,因此您只需要使用data.frame名稱而不是'dat'。

dat <- tribble(
~ID,     ~Title,             ~Composer,           ~Lyricist,          ~Illustrator,
"a0018",  "My Western Rose",   NA,                 NA,                NA,
"a0018",  NA,                "Lincoln, Harry J.",  NA,                NA,
"a0018",  NA,                NA,                 "Vandersloot, F.W.", NA,
"a0018" , NA,                NA,                 NA,                "Dittmar, W.J."
)
clean_df <- dat %>%
gather(key, value, na.rm=T) %>%
unique() %>% 
spread(key, value) %>% 
select(ID, Title, Composer, Lyricist, Illustrator)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM