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]