반응형
data.frame Group By 열
이 질문에 이미 답변이 있습니다.
- 그룹 13 답변 으로 변수를 합하는 방법
데이터 프레임 DF가 있습니다.
DF는 다음과 같습니다.
A B
1 1 2
2 1 3
3 2 3
4 3 5
5 3 6
이제 A 열로 행을 결합하고 B 열의 합계를 얻고 싶습니다.
예를 들면 :
A B
1 1 5
2 2 3
3 3 11
현재 sqldf 함수와 함께 SQL 쿼리를 사용하여이 작업을 수행하고 있습니다. 그러나 어떤 이유로 그것은 매우 느립니다. 더 편리한 방법이 있습니까? for 루프를 사용하여 수동으로도 할 수 있지만 다시 느립니다. 내 SQL 쿼리는 "Select A, Count (B) from DF group by A"입니다.
일반적으로 벡터화 된 작업을 사용하지 않고 for 루프를 사용할 때마다 단일 절차의 경우에도 성능이 매우 느립니다.
이것은 일반적인 질문입니다. 기본에서 찾고있는 옵션은 aggregate
입니다. data.frame
"mydf"라고 가정하면 다음을 사용할 수 있습니다.
> aggregate(B ~ A, mydf, sum)
A B
1 1 5
2 2 3
3 3 11
또한 "data.table"패키지를 살펴 보는 것이 좋습니다.
> library(data.table)
> DT <- data.table(mydf)
> DT[, sum(B), by = A]
A V1
1: 1 5
2: 2 3
3: 3 11
사용 dplyr
:
require(dplyr)
df <- data.frame(A = c(1, 1, 2, 3, 3), B = c(2, 3, 3, 5, 6))
df %>% group_by(A) %>% summarise(B = sum(B))
## Source: local data frame [3 x 2]
##
## A B
## 1 1 5
## 2 2 3
## 3 3 11
와 함께 sqldf
:
library(sqldf)
sqldf('SELECT A, SUM(B) AS B FROM df GROUP BY A')
나는 plyr
패키지를 보는 것이 좋습니다 . data.table이나 다른 패키지만큼 빠르지 않을 수도 있지만, 특히 R로 시작하고 데이터를 조작해야 할 때 매우 유익합니다.
> DF <- data.frame(A = c("1", "1", "2", "3", "3"), B = c(2, 3, 3, 5, 6))
> library(plyr)
> DF.sum <- ddply(DF, c("A"), summarize, B = sum(B))
> DF.sum
A B
1 1 5
2 2 3
3 3 11
require(reshape2)
T <- melt(df, id = c("A"))
T <- dcast(T, A ~ variable, sum)
집합체에 비해 정확한 이점이 확실하지 않습니다.
참고 URL : https://stackoverflow.com/questions/18799901/data-frame-group-by-column
반응형
'Programing' 카테고리의 다른 글
div를 숨기고 빈 공간은 유지 (0) | 2020.12.04 |
---|---|
C #에서 폐기 된 폐쇄에 대한 액세스? (0) | 2020.12.04 |
/ usr / local / bin이 Mac의 $ PATH에 있는지 확인 (0) | 2020.12.04 |
규칙을 사용하여 자동으로 구체화 된 뷰를 새로 고치거나 알림 (0) | 2020.12.04 |
docker rmi는 이미지를 제거 할 수 없습니다. (0) | 2020.12.04 |