基于不同data.frame的nrow结果创建观测数统计数据框
嘿,我来帮你搞定这个需求!你现在需要把多个data.frame的行数统计出来,整理成一个新的data.frame对吧?下面给你两种实用方案,按需选就行:
方法一:手动快速整理(适合少量数据框)
如果你的data.frame数量不多,像示例里的x1、y1、z1,直接把名称和行数对应起来构造新数据框就好,简单直接:
# 先构造你的示例数据 x <- c(1, 3, 4, 5, 6) x1 <- data.frame(x) y <- c(3, 9) y1 <- data.frame(y) z <- c(23, 43, 23, 12, 1, 3, 7, 8, 9) z1 <- data.frame(z) # 直接整理统计结果 result_df <- data.frame( df_name = c("x1", "y1", "z1"), obs_count = c(nrow(x1), nrow(y1), nrow(z1)) ) # 查看最终结果 print(result_df)
运行后会得到你想要的结果:
df_name obs_count 1 x1 5 2 y1 2 3 z1 9
方法二:批量处理(适合大量数据框)
如果你的data.frame数量很多,一个个手动写太繁琐,把它们放进列表里批量处理会高效很多:
# 把需要统计的data.frame统一放进列表(名称和数据框对应) df_list <- list(x1 = x1, y1 = y1, z1 = z1) # 批量计算行数并整理成数据框 result_df <- data.frame( df_name = names(df_list), obs_count = sapply(df_list, nrow) ) # 查看结果 print(result_df)
后续要是新增data.frame,只要把它加到df_list里就行,不用改其他代码,非常省心。
要是你想自动抓取当前环境里所有的data.frame(不用手动列出来),还可以用这个方法:
# 筛选当前环境下所有的data.frame all_dfs <- eapply(.GlobalEnv, is.data.frame) target_dfs <- names(all_dfs[all_dfs == TRUE]) # 批量统计每个data.frame的行数 result_df <- data.frame( df_name = target_dfs, obs_count = sapply(target_dfs, function(df) nrow(get(df))) ) print(result_df)
这个方法会自动识别当前环境里的所有data.frame,适合数据框数量多且不需要筛选的场景。
内容的提问来源于stack exchange,提问作者small_lebowski
相关产品推荐
相关产品推荐

