You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中计算DataFrame列维度占比后丢失Year列,求解决方法

解决方案

你丢失Year列的原因是test[2:4]只提取了数值列,后续计算仅针对这些列,自然不会保留Year。下面提供两种简单的解决方法:

方法1:计算占比后合并Year列

先构造示例数据方便演示:

test <- data.frame(
  Year = 2010:2014,
  Net = c(100, 200, 150, 300, 250),
  Cost = c(50, 80, 60, 120, 100),
  Gross = c(150, 280, 210, 420, 350)
)

执行以下代码:

# 计算列维度占比并转为数据框
percent_df <- as.data.frame(prop.table(as.matrix(test[, 2:4]), margin = 2))
# 将原数据的Year列与占比数据合并,并重命名第一列
result <- cbind(Year = test$Year, percent_df)

方法2:直接在原DataFrame上修改数值列

这种方法更简洁,直接替换原数据的数值列,保留Year列:

# 对第2到4列(Net、Cost、Gross)计算占比并替换原数据
test[, 2:4] <- prop.table(as.matrix(test[, 2:4]), margin = 2)

执行后,test就是包含Year列和各列占比的结果。

内容的提问来源于stack exchange,提问作者user11607046

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:55:16