制作';NA';特定';类型';在dplyr中
我正在制作一个函数来总结dplyr中的列。在由制作';NA';特定';类型';在dplyr中,r,dplyr,na,tidyverse,R,Dplyr,Na,Tidyverse,我正在制作一个函数来总结dplyr中的列。在由group\u by定义的组内:如果列中的值为常数k,则该组的汇总值应为k,但如果列为非常数,则该值应为NA 理想情况下,我希望将NA转换为输入列的类;因此,如果它是一个数字列,summary函数将的等效值返回为(NA,“numeric”) 为了实现上述目标,我编写了一个函数。collapse\u if\u constant;但为了简单起见,我只想解决如何在dplyr中生成指定类型的NA列 让 返回 x y z (fctr)
group\u by
定义的组内:如果列中的值为常数k,则该组的汇总值应为k
,但如果列为非常数,则该值应为NA
理想情况下,我希望将NA转换为输入列的类;因此,如果它是一个数字列,summary函数将的等效值返回为(NA,“numeric”)
为了实现上述目标,我编写了一个函数。collapse\u if\u constant
;但为了简单起见,我只想解决如何在dplyr中生成指定类型的NA列
让
返回
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);此问题已解决。使用
summary\u at
似乎保留了该类型,例如:
DF %>%
group_by(x) %>%
summarise_at(c("y", "z"), funs(as(NA, class(.))))
?NA
注意,您可以使用NA_整数
、NA_实数
、NA_复数
和NA_字符
。分别用于整数、数字、复数和字符类。我知道,但要动态构造特定类型的NA,我使用as(NA,type\u name)
ARG!抱歉,我使用的是dplyr::0.4.3;总结dplyr::0.7中的优秀工作。谢谢你的帮助。
tibble::tibble(x = factor("A"), y = as(NA, "numeric"), z = NA)
x y z
(fctr) (dbl) (lgl)
1 A NA NA
DF %>%
group_by(x) %>%
summarise_at(c("y", "z"), funs(as(NA, class(.))))