![](/img/trans.png)
[英]How do I alternate numeric values of 3 (numeric) columns and put that into one column?
[英]How do I make a column that sums only numeric columns?
我有一个包含很多列的数据框。
LABEL COL1 COL2 COL3
Meat 10 20 30
Veggies 20 30 40
如何制作名为SUMCOL
列,将COL1
、 COL2
、 COL3
和我添加的任何其他数字列相加?
仅具有上述列的SUMCOL
示例:
SUMCOL
60
90
您可以使用这个函数,它利用了select_if
和作用域参数is_numeric
myfun <- function(df) {
require(dplyr)
y <- select_if(df, is_numeric)
rowSums(y, na.rm=T)
}
df$SUMCOL <- myfun(df)
LABEL COL1 COL2 COL3 SUMCOL
1 Meat 10 20 30 60
2 Veggies 20 30 40 90
我最终使用了这段代码:
df$SUMCOL <- rowSums(df[sapply(df, is.numeric)], na.rm = TRUE)
我知道这是一个旧帖子,但有一种整洁的方法可以只用 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 的新列。为此,选择所有列(即句点),但仅对以“COL”开头的列执行 rowSums(顺便说一句,您还可以使用 c("COL1", "COL2", "COL3") 列出列并忽略任何缺失值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.