gpt4 book ai didi

r - 对单元格值满足 R 条件的所有行求和

转载 作者:行者123 更新时间:2023-12-05 01:23:03 26 4
gpt4 key购买 nike

我有一个数据框,例如:

df <- data.frame(col1 = c(1, 2500,1, 1, 1), 
col2 = c(12, NA, 8,9, 5),
col3 = c(25, 48, 7, 9, 14))
df
col1 col2 col3
1 1 12 25
2 2500 NA 48
3 1 8 7
4 1 9 9
5 1 5 14

我希望仅在单元格值大于 1 时对行求和,同时忽略 NA 值,以制作这样的数据框:

df_desired <- data.frame(col1 = c(2500), 
col2 = sum(12, 8,9, 5),
col3 = sum(25, 48, 7, 9, 14))
df_desired
col1 col2 col3
1 2500 34 103

我已经走到这一步了:

df_test <- df %>%
summarise_at(vars(contains("col")), sum, na.rm = TRUE)
df_test
col1 col2 col3
1 2504 34 103

我已经尝试了很多 ifelse 的变体,但都没有成功。到目前为止,我只找到了跨列条件求和和添加新列的示例。

最佳答案

使用 summariseacross

library(dplyr)
df %>%
summarise(across(everything(), ~ sum(.x[.x > 1], na.rm = TRUE)))
col1 col2 col3
1 2500 34 103

或者在 base R 中使用 colSums 将小于 2 的元素替换NA

colSums(replace(df, df < 2, NA),  na.rm = TRUE)
col1 col2 col3
2500 34 103

关于r - 对单元格值满足 R 条件的所有行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72887703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com