簡體   English   中英

如何制作僅對數字列求和的列?

[英]How do I make a column that sums only numeric columns?

我有一個包含很多列的數據框。

LABEL    COL1  COL2  COL3
Meat     10    20    30
Veggies  20    30    40

如何制作名為SUMCOL列,將COL1COL2COL3和我添加的任何其他數字列相加?

僅具有上述列的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM