R에서 'r', 'dataframe', 'dplyr'을 사용하여 사전 정의된 범위를 기반으로 열의 행 합계 계산
R에서 'r', 'dataframe', 'dplyr'을 사용하여 사전 정의된 범위를 기반으로 열의 행 합계 계산
예제 데이터프레임 생성
library(data.frame)
df <- data.frame(
id = c(1, 2, 3, 4, 5),
value = c(10, 20, 30, 40, 50),
range = c("A", "A", "B", "B", "A")
)
사전 정의된 범위 정의
범위를 정의하는 두 가지 방법이 있습니다.
방법 1: 벡터 사용
ranges <- c("A", "B")
방법 2: case_when
사용
ranges <- case_when(
df$range == "A" ~ "범위 A",
df$range == "B" ~ "범위 B"
)
dplyr을 사용하여 행 합계 계산
library(dplyr)
df_sum <- df %>%
group_by(range) %>%
summarise(total = sum(value))
결과 출력
print(df_sum)
# A tibble: 2 x 2
range total
<chr> <dbl>
1 범위 A 60
2 범위 B 80
설명
group_by(range)
:range
열을 기준으로 데이터프레임을 그룹화합니다.summarise(total = sum(value))
:value
열의 합계를total
이라는 새 열로 계산합니다.
예제 코드
library(data.frame)
library(dplyr)
# 예제 데이터프레임 생성
df <- data.frame(
id = c(1, 2, 3, 4, 5),
value = c(10, 20, 30, 40, 50),
range = c("A", "A", "B", "B", "A")
)
# 사전 정의된 범위 정의
ranges <- c("A", "B")
# `dplyr`을 사용하여 행 합계 계산
df_sum <- df %>%
group_by(range) %>%
summarise(total = sum(value))
# 결과 출력
print(df_sum)
# A tibble: 2 x 2
range total
<chr> <dbl>
1 범위 A 60
2 범위 B 80
설명:
추가 정보:
dplyr
패키지에는 다양한 집계 함수가 있습니다. 자세한 내용은 dplyr 공식 문서를 참조하십시오.case_when
함수는 조건에 따라 값을 선택하는 데 사용됩니다. 자세한 내용은 case_when 공식 문서를 참조하십시오.
사전 정의된 범위를 기반으로 열의 행 합계를 계산하는 대체 방법
기본 R 함수 사용
# 범위별 데이터프레임 분할
df_list <- split(df, df$range)
# 각 범위별 행 합계 계산
df_sum_list <- lapply(df_list, function(df) {
summarise(df, total = sum(value))
})
# 결과 결합
df_sum <- do.call(rbind, df_sum_list)
# 결과 출력
print(df_sum)
결과:
# A tibble: 2 x 2
range total
<chr> <dbl>
1 범위 A 60
2 범위 B 80
split(df, df$range)
:range
열을 기준으로 데이터프레임을 분할합니다.lapply(df_list, function(df) { summarise(df, total = sum(value)) })
: 각 범위별 데이터프레임에서value
열의 합계를total
이라는 새 열로 계산합니다.do.call(rbind, df_sum_list)
: 분할된 결과를 다시 결합합니다.
data.table 패키지 사용
library(data.table)
# 데이터프레임을 data.table로 변환
dt <- as.data.table(df)
# 범위별 행 합계 계산
dt_sum <- dt[, .(total = sum(value)), by = range]
# 결과 출력
print(dt_sum)
# range total
#1: 범위 A 60
#2: 범위 B 80
as.data.table(df)
: 데이터프레임을data.table
로 변환합니다.dt[, .(total = sum(value)), by = range]
:range
열을 기준으로 데이터프레임을 그룹화하고value
열의 합계를total
이라는 새 열로 계산합니다.
for 루프 사용
ranges <- c("A", "B")
df_sum <- vector("list", length(ranges))
for (i in seq_along(ranges)) {
df_sum[[i]] <- summarise(df[df$range == ranges[i]], total = sum(value))
}
df_sum <- do.call(rbind, df_sum)
# 결과 출력
print(df_sum)
# A tibble: 2 x 2
range total
<chr> <dbl>
1 범위 A 60
2 범위 B 80
for
루프를 사용하여 각 범위별로 행 합계를 계산하고 결과를 리스트에 저장합니다.
purrr 패키지 사용
library(purrr)
df_sum <- map(ranges, ~ summarise(df[df$range == .x], total = sum(value)))
# 결과 출력
print(df_sum)
[[1]]
# A tibble: 1 x 2
range total
<chr> <dbl>
1 범위 A 60
[[2]]
# A tibble: 1 x 2
range total
<chr> <dbl>
1 범위 B 80
map(ranges, ~ summarise(df[df$range == .x], total = sum(value)))
:ranges
벡터의 각 요소에 대해summarise
함수를 적용하여 각 범위별 행 합계를 계산합니다.
base R 코드 간소화
df_sum <- aggregate(value ~ range, df, sum)
# 결과 출력
print(df_sum)
r dataframe dplyr