在使用na.rm时,我有一个关于行求和的问题。我有以下数据集
CombData <- data.frame(WC=c(rep(NA, 4)),
NCO=c(rep(NA,4)),
FIN=c(-304.583,-275.356,-286.75,-223.596),
TACC=c(rep(NA,4)))
我的代码如下所示:
CombData <- CombData %>%
rowwise() %>%
mutate(TACC = sum(WC + NCO + FIN, na.rm = TRUE))
我真正想要的是:
data.frame(WC=c(rep(NA, 4)),
NCO=c(rep(NA,4)),
FIN=c(-304.583,-275.356,-286.75,-223.596),
TACC=c(-304.583,-275.356,-286.75,-223.596))
为什么我的代码不能产生上面的结果?提前感谢
发布于 2020-03-27 09:42:32
您已经在使用sum
,所以不需要在其中添加+
:
library(dplyr)
df %>%
rowwise() %>%
mutate(TACC = sum(WC,NCO ,FIN, na.rm = TRUE))
# WC NCO FIN TACC
# <lgl> <lgl> <dbl> <dbl>
#1 NA NA -305. -305.
#2 NA NA -275. -275.
#3 NA NA -287. -287.
#4 NA NA -224. -224.
然而,在基数R中存在一个更简单的选项:
rowSums(df, na.rm = TRUE)
发布于 2020-03-27 09:42:23
不使用dplyr
,您可以执行以下操作
CombData$TACC <- rowSums(CombData, na.rm = TRUE)
但是如果你想使用dplyr
,你可以这样做
CombData %>%
rowwise() %>%
mutate(TACC = sum(WC, NCO, FIN, na.rm = TRUE))
发布于 2020-03-27 18:50:02
有了tidyverse
,我们还可以使用pmap
library(purrr)
library(dplyr)
CombData %>%
mutate(TACC = pmap_dbl(., ~ sum(c(...), na.rm = TRUE)))
https://stackoverflow.com/questions/60883385
复制