我有一个包含很多列的数据框。
LABEL COL1 COL2 COL3
Meat 10 20 30
Veggies 20 30 40
如何将名为SUMCOL
的列添加COL1
,COL2
,COL3
以及我添加的任何其他数字列?
仅包含上述列的SUMCOL
示例:
SUMCOL
60
90
答案 0 :(得分:1)
您可以使用此功能,该功能利用futex
和范围参数select_if
is_numeric
myfun <- function(df) {
require(dplyr)
y <- select_if(df, is_numeric)
rowSums(y, na.rm=T)
}
df$SUMCOL <- myfun(df)
答案 1 :(得分:0)
我最终使用了这段代码:
df$SUMCOL <- rowSums(df[sapply(df, is.numeric)], na.rm = TRUE)
答案 2 :(得分:0)
我知道这是一篇旧帖子,但有一种整洁的方法可以只用 dplyr 来做到这一点:
library(dplyr)
#Create dataset
data <- tibble(LABEL = c("Meat", "Veggies"),
COL1 = c(10, 20),
COL2 = c(20, 30),
COL3 = c(30, 40))
data %>%
mutate(SUMCOL = select(., starts_with("COL")) %>%
rowSums(na.rm = TRUE))
如果有人不熟悉这个语法,它基本上是说“制作(变异)一个名为 SUMCOL 的新列。为此,选择所有列(即句点),但仅对以“开头的列执行 rowSums COL”(顺便说一句,您也可以使用 c("COL1", "COL2", "COL3") 列出列并忽略任何缺失值。