![](/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.