[英]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.