R语言中对含逗号分隔值的列计算行均值的问题
解决方案
以下是实现需求的R代码,分步骤说明:
步骤1:加载必要包并预处理数据
先加载tidyr和dplyr包(未安装的话先运行install.packages(c("tidyr", "dplyr"))),然后将数据中的.替换为缺失值NA:
library(tidyr) library(dplyr) # 读取原始数据 df <- read.table(text="A B C D 1,2 . 1,3 1,4 2,1 1,1 1,1 2,3 ", header=TRUE) # 将"."替换为NA df[df == "."] <- NA
步骤2:拆分所有列的逗号分隔值
用str_split_fixed拆分每一列的逗号分隔内容,拆为两个子列后统一命名规则,再转换为数值类型:
# 拆分所有列并展开为多列 split_df <- df %>% mutate(across(everything(), ~str_split_fixed(., ",", 2))) %>% unnest_wider(everything(), names_sep = "_") # 转换为数值型 split_df <- split_df %>% mutate(across(everything(), as.numeric))
步骤3:计算每行的均值
提取所有第一位置的列(后缀_1)和第二位置的列(后缀_2),按行计算均值:
result <- split_df %>% rowwise() %>% mutate( Value_1_mean = mean(c(A_1, B_1, C_1, D_1), na.rm = TRUE), Value_2_mean = mean(c(A_2, B_2, C_2, D_2), na.rm = TRUE) ) %>% select(Value_1_mean, Value_2_mean) # 查看结果 print(result)
运行结果
执行后输出:
# A tibble: 2 × 2 Value_1_mean Value_2_mean <dbl> <dbl> 1 1 3 2 1.5 1.5
如果需要添加自定义行标签,可执行:
rownames(result) <- c("First value of comma in first row", "First value of comma in second row") print(result)
输出:
Value_1_mean Value_2_mean First value of comma in first row 1 3 First value of comma in second row 1.5 1.5
内容的提问来源于stack exchange,提问作者Gabriel G.
相关产品推荐
相关产品推荐

