R语言:选取多行生成新DataFrame及聚类簇变量组合查看方法
查看不同簇的变量组合 & 生成子DataFrame的方法
嘿,针对你的需求,我整理了两种实用的解决办法,直接上手就能用:
一、查看不同簇的变量组合
首先,咱们得把聚类结果和原DataFrame绑定到一起,这样才能对应到每个观测的簇归属:
# 假设你的原DataFrame名为df,将聚类结果作为新列加入 df$cluster <- cutree_hclust
接下来有两种常用方式查看各簇的变量情况:
方式1:拆分出每个簇的独立DataFrame
用split()函数可以直接把原数据按簇拆分,得到一个包含8个元素的列表,每个元素对应一个簇的所有观测:cluster_list <- split(df, df$cluster) # 查看第1簇的所有数据 cluster_list[[1]] # 查看第3簇的前5行 head(cluster_list[[3]], 5)方式2:统计各簇变量的汇总信息
如果想快速对比各簇变量的差异(比如均值、标准差),用dplyr包的分组统计会很方便:library(dplyr) cluster_summary <- df %>% group_by(cluster) %>% summarise(across(everything(), list(mean = mean, sd = sd), na.rm = TRUE)) print(cluster_summary)这样就能清晰看到每个簇中各个变量的集中趋势和离散程度啦。
二、选取若干行生成新DataFrame
根据不同的选取需求,有几种常见操作:
按行号选取
直接指定行的索引即可,比如选取第1、第100、第500行:new_df <- df[c(1, 100, 500), ]按簇(条件)选取
比如想把第1簇和第2簇的所有观测单独拿出来:# base R写法 new_df <- df[df$cluster %in% c(1, 2), ] # dplyr写法更直观 new_df <- df %>% filter(cluster %in% c(1, 2))按行名选取
如果你的DataFrame有自定义行名,也可以直接指定行名:new_df <- df[c("obs_101", "obs_205"), ]
小提示: 操作后可以用dim(new_df)或者head(new_df)检查新DataFrame的行数和内容是否符合预期~
内容的提问来源于stack exchange,提问作者BloopFloopy
相关产品推荐
相关产品推荐

