簡體   English   中英

在dplyr中創建特定“類型”的“NA”列

[英]Make 'NA' columns of a specific 'type' in dplyr

我正在編寫一個函數來匯總dplyr中的列。 group_by定義的組內:如果列中的值是某個常量k,則該組的匯總值應為k ,但如果該列為非常量,則該值應為NA。

理想情況下,我想將NA轉換為輸入列的類; 因此,如果它是一個數字列,則summary函數返回等價的as(NA, "numeric")

為了做到這一點,我寫了一個函數.collapse_if_constant ; 但為了簡單起見,我只想弄清楚如何在dplyr中創建指定類型的NA列。

DF <- data.frame(x = "A", y = 1:3, z = c(TRUE, FALSE, TRUE))

然后

DF %>%
  group_by(x) %>%
  summarise(y = as(NA, class(y)), z = as(NA, class(z)))

回報

  x      y     z
  (fctr) (lgl) (lgl)
1 A       NA    NA

但是,我希望它看起來像

tibble::tibble(x = factor("A"), y = as(NA, "numeric"), z = NA)
  x      y     z
  (fctr) (dbl) (lgl)
1 A       NA    NA

...以便匯總列與輸入列屬於同一類。


請忽略這個問題。 我使用的是早期版本的dplyr(v0.4.3; CRAN上的電流為0.7.4); 問題已經解決。

使用summarize_at似乎保留了類型,例如:

DF %>%
  group_by(x) %>%
  summarise_at(c("y", "z"), funs(as(NA, class(.))))

暫無
暫無

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

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