gpt4 book ai didi

R - 按多列分组

转载 作者:行者123 更新时间:2023-12-04 11:26:09 25 4
gpt4 key购买 nike

我正在尝试对将公司分为 20 个不同行业和大约 800 个类别的数据集进行分析。每个行业类别都在其自己的列中。这是一个示例数据框

df <- data.frame(biz.name=c("goog", "face", "eb"), worth=c(100, 200, 300),
cat1=c("social", "social", "social"), cat2=c(NA, "search", "finance"),
cat3=c(NA, NA, "commerce"))

我想知道如何对不同类型的类别进行分析。例如,我将如何获得“社会”或“金融”等不同类别的平均值(value)。每个公司最多可以分为 20 个类别(每行不重复)。

dplyr 包是我常用的 group_by 方法,但链接似乎不适用于多列
cat.test <- df %>% 
group_by(cat1:cat2) %>%
summarise (avg = mean(is.na(worth)))

该代码为具有多个类别组合的业务的每个排列生成一个度量,而不是每个类别单独生成。在样本数据框中,社交类别的总净值应为 600,平均值为 300。

我查看了多个教程,但还没有找到一个可以对多个列进行 group_by 的教程。谢谢,如果我能让这个问题更清楚,请告诉我。

[更新:编辑过的 data.frame 代码]

最佳答案

我清理了您的代码,并能够使用 data.table 获得结果。包裹:

df <- data.frame(biz.name=c("goog", "face", "eb"), worth=c(100, 200, 300), 
cat1=c("social", "social", "social"), cat2=c("NA", "search", "finance"),
cat3=c("NA", "NA", "commerce"))

library(data.table)
dt <- data.table(df)
dt[, Mean:=mean(worth), by=list(cat1, cat2)]

> dt
biz.name worth cat1 cat2 cat3 Mean
1: goog 100 social NA NA 100
2: face 200 social search NA 200
3: eb 300 social finance commerce 300

关于R - 按多列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32432237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com