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
相关产品推荐
相关产品推荐

