如何根据分组变量计算所有列的总和并删除 NA
How to calculate the sum of all columns based on a grouped variable and remove NA
我有一个数据集,我想在其中按 ID 变量分组,然后计算每个列/变量的总和。但是,正如您所见,我有一些 NA 并且我想在执行求和函数时删除它们,因为它们在某些行中 return NA 尽管相同 ID 的某些行包含值。我试图环顾四周但没有成功,我又尝试了不同的方法但没有成功。如果有任何帮助,我将不胜感激。
提前致谢。
data <- data.frame(ID = c(1, 1, 2, 2, 3, 3, 3, 4, 4, 4),
var1 = c(1, 2, 5, 10, NA, 5, 23, NA, NA, 1),
var2 = c(1, NA, NA, 1, NA, 0, 1, 3, 23, 4))
data <- data %>%
group_by(ID) %>%
summarise(across(everything(), sum(., na.rm = T)))
只是缺少波浪号 ~
:
data %>%
group_by(ID) %>%
summarise(across(everything(), ~sum(., na.rm = T)))
# A tibble: 4 x 3
ID var1 var2
* <dbl> <dbl> <dbl>
1 1 3 1
2 2 15 1
3 3 28 1
4 4 1 30
如果一个 ID
组只有 NA
个值,您可以这样做:
data %>%
group_by(ID) %>%
summarise(across(everything(), ~ifelse(all(is.na(.)), NA, sum(., na.rm = T))))
我们可以在不使用 lambda 函数的情况下指定函数的参数
library(dplyr)
data %>%
group_by(ID) %>%
summarise(across(everything(), sum, na.rm = TRUE), .groups = 'drop')
我有一个数据集,我想在其中按 ID 变量分组,然后计算每个列/变量的总和。但是,正如您所见,我有一些 NA 并且我想在执行求和函数时删除它们,因为它们在某些行中 return NA 尽管相同 ID 的某些行包含值。我试图环顾四周但没有成功,我又尝试了不同的方法但没有成功。如果有任何帮助,我将不胜感激。
提前致谢。
data <- data.frame(ID = c(1, 1, 2, 2, 3, 3, 3, 4, 4, 4),
var1 = c(1, 2, 5, 10, NA, 5, 23, NA, NA, 1),
var2 = c(1, NA, NA, 1, NA, 0, 1, 3, 23, 4))
data <- data %>%
group_by(ID) %>%
summarise(across(everything(), sum(., na.rm = T)))
只是缺少波浪号 ~
:
data %>%
group_by(ID) %>%
summarise(across(everything(), ~sum(., na.rm = T)))
# A tibble: 4 x 3
ID var1 var2
* <dbl> <dbl> <dbl>
1 1 3 1
2 2 15 1
3 3 28 1
4 4 1 30
如果一个 ID
组只有 NA
个值,您可以这样做:
data %>%
group_by(ID) %>%
summarise(across(everything(), ~ifelse(all(is.na(.)), NA, sum(., na.rm = T))))
我们可以在不使用 lambda 函数的情况下指定函数的参数
library(dplyr)
data %>%
group_by(ID) %>%
summarise(across(everything(), sum, na.rm = TRUE), .groups = 'drop')