我有一个数据帧:

dat <- data.frame(X1 = c(0, NA, NA),
                  X2 = c(1, NA, NA),
                  X3 = c(1, NA, NA),
                  Y1 = c(1, NA, NA),
                  Y2 = c(NA, NA, NA),
                  Y3 = c(0, NA, NA))

我想为X和Y变量创建一个综合分数.这就是我目前的情况:

clean_dat <- dat %>% rowwise() %>% mutate(X = sum(c(X1, X2, X3), na.rm = T),
                                          Y = sum(c(Y1, Y2, Y3), na.rm = T))

但是,我希望XY列中所有NA行(即第2行和第3行)的综合得分为0.有人知道怎么做吗?

编辑:我想知道我怎样才能在第2行和第3行中得到XY.

非常感谢!

推荐答案

默认情况下,当我们使用na.rm = TRUE且所有元素都是NA时,sumrowSums返回0.为了防止出现这种情况,可以使用if/elsecase_when方法,即确定是否有if_any的非NA元素,然后在case_when内取相关列中的rowSums(默认情况下,TRUE将返回NA)

library(dplyr)
dat %>% 
  mutate(X = case_when(if_any(starts_with('X'), complete.cases) 
    ~ rowSums(across(starts_with('X')), na.rm = TRUE)),
   Y = case_when(if_any(starts_with('Y'), complete.cases) ~ 
    rowSums(across(starts_with('Y')), na.rm = TRUE)) )

-输出

  X1 X2 X3 Y1 Y2 Y3  X  Y
1  0  1  1  1 NA  0  2  1
2 NA NA NA NA NA NA NA NA
3 NA NA NA NA NA NA NA NA

R相关问答推荐

删除facet_wrap标签之间的水平线

R创建一个数据透视表,计算多个组的百分比

计算R中的威布尔分布的EDF

将复杂的组合列表转换为数据框架

更改编号列表的 colored颜色

如何写一个R函数来旋转最后n分钟?

try 将 colored颜色 编码添加到ggploly的标题中

以相同的方式对每个表进行排序

计算两列中满足特定条件连续行之间的平均值

当我们有多个反斜杠和/特殊字符时使用Gsubing

TreeNode打印 twig 并为其上色

在保留列表元素属性的同时替换列表元素

汇总数据的Sheffe检验的P值(平均值和标准差)

如何在R中改变fviz_pca_biplot中圆的边界线的 colored颜色 ?

为什么函数toTitleCase不能处理english(1),而toupper可以?

计算Mean by分组和绑定到R中的数据集

随机将数据帧中特定列上的某些行设置为NA

名字的模糊匹配

隐藏基于 case 总数的值

当R使用c()组合两个向量时会发生什么?