在R语言中统计数据框某列拆分后元素的出现次数
基于Python pandas的解决方案
步骤1:导入库并构造数据框
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'X1': ['Fox', 'Duck', 'Bird'], 'X2': ['A/B/C/D', 'A/B/E/F', 'A/E/G'] })
步骤2:拆分并展开X2列的元素
把X2中用/分隔的每个元素拆成单独行:
# 拆分字符串并转成行 split_elements = df['X2'].str.split('/', expand=True).stack().reset_index(drop=True)
步骤3:统计次数并整理结果
# 统计每个元素的出现次数 count_df = split_elements.value_counts().reset_index() # 修改列名匹配需求 count_df.columns = ['X1', 'X2 (counts)'] # 按元素排序,和示例结果一致 count_df = count_df.sort_values('X1').reset_index(drop=True) # 输出结果 print(count_df)
运行后输出:
X1 X2 (counts) 0 A 3 1 B 2 2 C 1 3 D 1 4 E 2 5 F 1 6 G 1
R语言解决方案
library(tidyverse) # 构造数据框 df <- tibble( X1 = c("Fox", "Duck", "Bird"), X2 = c("A/B/C/D", "A/B/E/F", "A/E/G") ) # 拆分元素、统计次数并整理格式 count_result <- df %>% separate_rows(X2, sep = "/") %>% # 拆分并展开成行 count(X2, name = "X2 (counts)") %>% # 统计次数 rename(X1 = X2) %>% # 修改列名 arrange(X1) # 按元素排序 print(count_result)
运行后得到与需求一致的结果。
内容的提问来源于stack exchange,提问作者Gabriel G.
相关产品推荐
相关产品推荐

