【问题标题】:Group the data by column and obtain the mean of the rest of the variables in R按列对数据进行分组,并获得 R 中其余变量的平均值
【发布时间】:2021-05-11 19:50:43
【问题描述】:

我总共有 21k 次观察。为了进行聚类分析,我想按“邻域”列对 21K 观测值进行分组(总共有 140 个邻域)。所以我想按“社区”分组,并获得每个社区的定量变量的平均值(例如“购买价格”)和定性变量的模式(例如“能源证书”、“有停车场”等)。 因此数据集只是 140 行(邻域),它们的方法和模式取决于相关的变量。 我希望有一个人可以帮助我。非常感谢您。

【问题讨论】:

标签: r


【解决方案1】:

我将使用mtcarsdplyr 进行模拟。

library(dplyr)
quant <- c("mpg", "disp", "hp")
qual <- c("vs", "am", "gear")

mtcars %>%
  group_by(cyl) %>%
  summarize(across(quant, mean), across(qual, ~ names(sort(table(.),decreasing=TRUE))[1]))
# # A tibble: 3 x 7
#     cyl   mpg  disp    hp vs    am    gear 
#   <dbl> <dbl> <dbl> <dbl> <chr> <chr> <chr>
# 1     4  26.7  105.  82.6 1     1     4    
# 2     6  19.7  183. 122.  1     0     4    
# 3     8  15.1  353. 209.  0     0     3    

names(table(.))[1] 是您的定性变量的“模式”。我们可以通过一个快速表来验证它是否符合我们的预期:

xtabs(~cyl+vs, data=mtcars)
#    vs
# cyl  0  1
#   4  1 10
#   6  3  4
#   8 14  0
xtabs(~cyl+am, data=mtcars)
#    am
# cyl  0  1
#   4  3  8
#   6  4  3
#   8 12  2
xtabs(~cyl+gear, data=mtcars)
#    gear
# cyl  3  4  5
#   4  1  8  2
#   6  2  4  1
#   8 12  0  2

表示对于4、6、8档,最常见的vs分别是110;对于am100;对于gear443。这些对应于上面返回中的值。

在您的情况下,将cyl 更改为neighborhood,并确保您的qualquant 列出了所需的变量。

【讨论】:

  • 令人难以置信的大师,非常感谢你:))????
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 2020-07-07
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
相关资源
最近更新 更多