R Language
열 작동
수색…
각 열의 합
데이터 세트의 각 열 sum 를 sum 해야한다고 가정합니다.
set.seed(20)
df1 <- data.frame(ID = rep(c("A", "B", "C"), each = 3), V1 = rnorm(9), V2 = rnorm(9))
m1 <- as.matrix(df1[-1])
이를 수행 할 수있는 많은 방법이 있습니다. base R 사용하면 가장 좋은 옵션은 colSums
colSums(df1[-1], na.rm = TRUE)
여기서는 첫 번째 열을 숫자가 아니므로 제거했으며 na.rm = TRUE 지정하여 각 열의 sum 을 sum 했습니다 (데이터 집합에 NAs가있는 경우)
이것은 matrix 에서도 작동합니다.
colSums(m1, na.rm = TRUE)
이것은 lapply/sapply/vapply 를 사용하여 반복 할 수 있습니다.
lapply(df1[-1], sum, na.rm = TRUE)
출력은 list 입니다. vector 출력이 필요한 경우
sapply(df1[-1], sum, na.rm = TRUE)
또는
vapply(df1[-1], sum, na.rm = TRUE, numeric(1))
행렬의 경우 열을 반복하려는 경우 MARGIN = 1 을 사용하여 apply 를 사용 apply
apply(m1, 2, FUN = sum, na.rm = TRUE)
dplyr 또는 data.table 과 같은 패키지를 사용하여이를 수행 할 수있는 방법이 있습니다.
library(dplyr)
df1 %>%
summarise_at(vars(matches("^V\\d+")), sum, na.rm = TRUE)
여기서는 summarise_at sum 를 얻기 위해 필요한 열 이름과 일치하는 정규식을 전달합니다. 정규식은 V 시작하는 모든 열과 하나 이상의 숫자 ( \\d+ )가 일치합니다.
data.table 옵션은 다음과 같습니다.
library(data.table)
setDT(df1)[, lapply(.SD, sum, na.rm = TRUE), .SDcols = 2:ncol(df1)]
우리는 'data.table'(에 'data.frame'변환 setDT(df1) ) 열이있는 기능을 적용 할 수 지정된 .SDcols Data.table (의 부분 집합을 통해 루프를 .SD )과 수 sum .
그룹을 작업 단위로 사용해야하는 경우 열 / 열 단위로 그룹을 지정하면 쉽게 수행 할 수 있습니다.
df1 %>%
group_by(ID) %>%
summarise_at(vars(matches("^V\\d+")), sum, na.rm = TRUE)
우리가해야 할 경우 sum 모든 열을 summarise_each 대신 사용할 수 있습니다 summarise_at
df1 %>%
group_by(ID) %>%
summarise_each(funs(sum(., na.rm = TRUE)))
data.table 옵션은 다음과 같습니다.
setDT(df1)[, lapply(.SD, sum, na.rm = TRUE), by = ID]